diff --git a/.appveyor.yml b/.appveyor.yml
index a096bf9..a506d86 100644
--- a/.appveyor.yml
+++ b/.appveyor.yml
@@ -14,18 +14,10 @@ environment:
 
 install:
   - git submodule update --init --recursive
-  - call "%ProgramFiles(x86)%\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x86
-  - set PATH=C:\Qt\Tools\QtCreator\bin;C:\Qt\5.5\msvc2013\bin;%PATH%
+  - call "%ProgramFiles(x86)%\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86
+  - set PATH=C:\Qt\Tools\QtCreator\bin;C:\Qt\5.8\msvc2015\bin;%PATH%
   - mkdir %LOCALAPPDATA%\QtProject && copy test\qtlogging.ini %LOCALAPPDATA%\QtProject\
   - ps: |
-      Write-Host "Installing NSIS..." -ForegroundColor Cyan
-      $exePath = "$($env:USERPROFILE)\nsis-3.0rc1-setup.exe"
-      Write-Host "Downloading..."
-      (New-Object Net.WebClient).DownloadFile('https://storage.googleapis.com/appveyor-download-cache/nsis/nsis-3.0rc1-setup.exe', $exePath)
-      Write-Host "Installing..."
-      cmd /c start /wait $exePath /S
-      Write-Host "Installed" -ForegroundColor Green
-  - ps: |
       Write-Host "Installing GStreamer..." -ForegroundColor Cyan
       $msiPath = "$($env:USERPROFILE)\gstreamer-1.0-x86-1.5.2.msi"
       Write-Host "Downloading..."
@@ -43,7 +35,7 @@ install:
       Write-Host "Installed" -ForegroundColor Green
 
 build_script:
-  - mkdir %SHADOW_BUILD_DIR% && cd %SHADOW_BUILD_DIR% && C:\Qt\5.5\msvc2013\bin\qmake -r CONFIG-=debug_and_release CONFIG+=%CONFIG% CONFIG+=WarningsAsErrorsOn %APPVEYOR_BUILD_FOLDER%\qgroundcontrol.pro
+  - mkdir %SHADOW_BUILD_DIR% && cd %SHADOW_BUILD_DIR% && C:\Qt\5.8\msvc2015\bin\qmake -r CONFIG-=debug_and_release CONFIG+=%CONFIG% CONFIG+=WarningsAsErrorsOn %APPVEYOR_BUILD_FOLDER%\qgroundcontrol.pro
   - cd %SHADOW_BUILD_DIR% && jom
   - if "%CONFIG%" EQU "installer" ( copy %SHADOW_BUILD_DIR%\release\QGroundControl-installer.exe %APPVEYOR_BUILD_FOLDER%\QGroundControl-installer.exe )
 # Generate the source server information to embed in the PDB
diff --git a/.travis.yml b/.travis.yml
index 8533f3c..bbb2485 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -89,9 +89,9 @@ before_install:
 install:
   # linux dependencies: qt
   - if [ "${SPEC}" = "linux-g++-64" ]; then
-        wget https://s3-us-west-2.amazonaws.com/qgroundcontrol/dependencies/Qt5.5.1-linux-min.tar.bz2 &&
-        tar jxf Qt5.5.1-linux-min.tar.bz2 -C /tmp &&
-        export PATH=/tmp/Qt/5.5/gcc_64/bin:$PATH &&
+        wget https://s3-us-west-2.amazonaws.com/qgroundcontrol/dependencies/Qt5.8.0-linux-min.tar.bz2 &&
+        tar jxf Qt5.8.0-linux-min.tar.bz2 -C /tmp &&
+        export PATH=/tmp/Qt5.8-linux/5.8/gcc_64/bin:$PATH &&
         export DISPLAY=:99.0 &&
         sh -e /etc/init.d/xvfb start
         ;
@@ -99,8 +99,8 @@ install:
 
   # android dependencies: qt, gstreamer, android-ndk
   - if [ "${SPEC}" = "android-g++" ]; then
-        wget https://s3-us-west-2.amazonaws.com/qgroundcontrol/dependencies/Qt5.5.1-linux-min.tar.bz2 &&
-        tar jxf Qt5.5.1-linux-min.tar.bz2 -C /tmp &&
+        wget https://s3-us-west-2.amazonaws.com/qgroundcontrol/dependencies/Qt5.8.0-android-min.tar.bz2 &&
+        tar jxf Qt5.8.0-android-min.tar.bz2 -C /tmp &&
         wget https://s3-us-west-2.amazonaws.com/qgroundcontrol/dependencies/gstreamer-1.0-android-armv7-1.5.2.tar.bz2 &&
         mkdir -p ${TRAVIS_BUILD_DIR}/gstreamer-1.0-android-armv7-1.5.2 &&
         tar jxf gstreamer-1.0-android-armv7-1.5.2.tar.bz2 -C ${TRAVIS_BUILD_DIR}/gstreamer-1.0-android-armv7-1.5.2 &&
@@ -109,35 +109,34 @@ install:
         ./android-ndk-r10e-linux-x86_64.bin > /dev/null &&
         export ANDROID_NDK_ROOT=`pwd`/android-ndk-r10e &&
         export ANDROID_SDK_ROOT=/usr/local/android-sdk &&
-        export PATH=/tmp/Qt/5.5/android_armv7/bin:`pwd`/android-ndk-r10e:$PATH && echo $PATH
+        export PATH=/tmp/Qt5.8-android/5.8/android_armv7/bin:`pwd`/android-ndk-r10e:$PATH && echo $PATH
         ;
     fi
 
   # osx dependencies: qt, gstreamer, gstreamer-devel
   - if [ "${SPEC}" = "macx-clang" ]; then
-        wget https://s3-us-west-2.amazonaws.com/qgroundcontrol/dependencies/Qt5.5.1-mac-clang-min.tar.bz2 &&
-        tar jxf Qt5.5.1-mac-clang-min.tar.bz2 -C /tmp &&
+        wget https://s3-us-west-2.amazonaws.com/qgroundcontrol/dependencies/Qt5.8.0-mac-clang-min.tar.bz2 &&
+        tar jxf Qt5.8.0-mac-clang-min.tar.bz2 -C /tmp &&
         wget https://s3-us-west-2.amazonaws.com/qgroundcontrol/dependencies/gstreamer-1.0-1.5.2-x86_64.pkg &&
         sudo installer -verboseR -pkg gstreamer-1.0-1.5.2-x86_64.pkg -target / &&
         wget https://s3-us-west-2.amazonaws.com/qgroundcontrol/dependencies/gstreamer-1.0-devel-1.5.2-x86_64.pkg &&
         sudo installer -verboseR -pkg gstreamer-1.0-devel-1.5.2-x86_64.pkg -target / &&
         wget https://s3-us-west-2.amazonaws.com/qgroundcontrol/dependencies/osx-gstreamer.tar.bz2 &&
         sudo tar jxf osx-gstreamer.tar.bz2 -C /Library/Frameworks &&
-        export QT_DIR=Qt5.5-mac-clang/5.5/clang_64 &&
+        export QT_DIR=Qt5.8-mac-clang/5.8/clang_64 &&
         export QT_QPA_PLATFORM_PLUGIN_PATH=/tmp/$QT_DIR/plugins &&
         export QML2_IMPORT_PATH=/tmp/$QT_DIR/qml &&
-        export PATH=/tmp/$QT_DIR/bin:$PATH &&
-        tools/patch_qt_for_xcode8.sh
+        export PATH=/tmp/$QT_DIR/bin:$PATH
         ;
     fi
 
   # ios dependencies: qt, TODO: add gstreamer
   - if [ "${SPEC}" = "macx-ios-clang" ]; then
-        wget https://s3-us-west-2.amazonaws.com/qgroundcontrol/dependencies/Qt5.5.1-ios-min.tar.bz2 &&
-        tar jxf Qt5.5.1-ios-min.tar.bz2 -C /tmp &&
+        wget https://s3-us-west-2.amazonaws.com/qgroundcontrol/dependencies/Qt5.8.0-ios-min.tar.bz2 &&
+        tar jxf Qt5.8.0-ios-min.tar.bz2 -C /tmp &&
         export IOS_CCACHE_CC=`/usr/bin/xcrun -sdk iphoneos -find clang` &&
         export IOS_CCACHE_CXX=`/usr/bin/xcrun -sdk iphoneos -find clang++` &&
-        export PATH=/tmp/ios/bin:$PATH &&
+        export PATH=/tmp/Qt5.8-ios/5.8/ios/bin:$PATH &&
         tools/patch_qt_for_xcode8.sh
         ;
     fi
diff --git a/QGCCommon.pri b/QGCCommon.pri
index de0c516..732b99a 100644
--- a/QGCCommon.pri
+++ b/QGCCommon.pri
@@ -46,7 +46,7 @@ linux {
         error("Unsuported Linux toolchain, only GCC 32- or 64-bit is supported")
     }
 } else : win32 {
-    win32-msvc2010 | win32-msvc2012 | win32-msvc2013 {
+    win32-msvc2010 | win32-msvc2012 | win32-msvc2013 | win32-msvc2015 {
         message("Windows build")
         CONFIG += WindowsBuild
         DEFINES += __STDC_LIMIT_MACROS
@@ -77,6 +77,7 @@ linux {
     }
     message("iOS build")
     CONFIG  += iOSBuild MobileBuild app_bundle NoSerialBuild
+    CONFIG  -= bitcode
     DEFINES += __ios__
     DEFINES += QGC_NO_GOOGLE_MAPS
     DEFINES += NO_SERIAL_LINK
@@ -202,8 +203,13 @@ MacBuild | LinuxBuild {
 }
 
 WindowsBuild {
+    win32-msvc2015 {
+        QMAKE_CFLAGS -= -Zc:strictStrings
+        QMAKE_CXXFLAGS -= -Zc:strictStrings
+    }
     QMAKE_CFLAGS_RELEASE -= -Zc:strictStrings
     QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO -= -Zc:strictStrings
+
     QMAKE_CXXFLAGS_RELEASE -= -Zc:strictStrings
     QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO -= -Zc:strictStrings
     QMAKE_CXXFLAGS_WARN_ON += /W3 \
diff --git a/QGCSetup.pri b/QGCSetup.pri
index eabeca1..fa0b3e5 100644
--- a/QGCSetup.pri
+++ b/QGCSetup.pri
@@ -84,6 +84,10 @@ WindowsBuild {
             QMAKE_POST_LINK += $$escape_expand(\\n) $$QMAKE_COPY \"C:\\Windows\\System32\\msvcp120.dll\"  \"$$DESTDIR_WIN\"
             QMAKE_POST_LINK += $$escape_expand(\\n) $$QMAKE_COPY \"C:\\Windows\\System32\\msvcr120.dll\"  \"$$DESTDIR_WIN\"
         }
+        else:win32-msvc2015 {
+            QMAKE_POST_LINK += $$escape_expand(\\n) $$QMAKE_COPY \"C:\\Windows\\System32\\msvcp140.dll\"  \"$$DESTDIR_WIN\"
+            QMAKE_POST_LINK += $$escape_expand(\\n) $$QMAKE_COPY \"C:\\Windows\\System32\\vcruntime140.dll\"  \"$$DESTDIR_WIN\"
+        }
         else {
             error("Visual studio version not supported, installation cannot be completed.")
         }
@@ -122,9 +126,9 @@ LinuxBuild {
 
         !contains(DEFINES, __rasp_pi2__) {
             QT_LIB_LIST += \
-                libicudata.so.54 \
-                libicui18n.so.54 \
-                libicuuc.so.54
+                libicudata.so.56 \
+                libicui18n.so.56 \
+                libicuuc.so.56
         }
 
         for(QT_LIB, QT_LIB_LIST) {
diff --git a/libs/qwt/qwt_plot_canvas.cpp b/libs/qwt/qwt_plot_canvas.cpp
index 0271713..e558a44 100644
--- a/libs/qwt/qwt_plot_canvas.cpp
+++ b/libs/qwt/qwt_plot_canvas.cpp
@@ -937,7 +937,14 @@ void QwtPlotCanvas::drawBorder( QPainter *painter )
     else
     {
 #if QT_VERSION >= 0x040500
+#if !defined(_MSC_VER)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+#endif
         QStyleOptionFrameV3 opt;
+#if !defined(_MSC_VER)
+#pragma GCC diagnostic pop
+#endif
         opt.init(this);
 
         int frameShape  = frameStyle() & QFrame::Shape_Mask;
diff --git a/src/GPS/definitions.h b/src/GPS/definitions.h
index ca655d0..63fd2c2 100644
--- a/src/GPS/definitions.h
+++ b/src/GPS/definitions.h
@@ -80,10 +80,14 @@ static inline gps_abstime gps_absolute_time() {
 
 //timespec is UNIX-specific
 #ifdef _WIN32
+#if _MSC_VER < 1900
 struct timespec
 {
     time_t tv_sec;
     long tv_nsec;
 };
+#else
+#include <time.h>
+#endif
 #endif
 
diff --git a/tools/StripAndTarQtForAndroidMin.sh b/tools/StripAndTarQtForAndroidMin.sh
new file mode 100755
index 0000000..548c74d
--- /dev/null
+++ b/tools/StripAndTarQtForAndroidMin.sh
@@ -0,0 +1,19 @@
+#!/bin/bash
+if [ $# -eq 0 ]; then
+    echo 'Qt directory must be specified as argument'
+    exit 1
+fi
+if [ ! -d $1 ] ; then
+    echo 'Qt directory not found'
+    exit 1
+fi
+cd $1
+rm *
+find . ! -name '5.8' -maxdepth 1 -type d -exec rm -rf {} +
+cd 5.8
+find . ! -name 'android_armv7' -maxdepth 1 -type d -exec rm -rf {} +
+cd clang_64
+rm -rf doc
+cd $1
+cd ..
+tar -jcvf Qt5.8.0-android-min.tar.bz2 $1
diff --git a/tools/StripAndTarQtForLinuxMin.sh b/tools/StripAndTarQtForLinuxMin.sh
new file mode 100755
index 0000000..b813c5b
--- /dev/null
+++ b/tools/StripAndTarQtForLinuxMin.sh
@@ -0,0 +1,19 @@
+#!/bin/bash
+if [ $# -eq 0 ]; then
+    echo 'Qt directory must be specified as argument'
+    exit 1
+fi
+if [ ! -d $1 ] ; then
+    echo 'Qt directory not found'
+    exit 1
+fi
+cd $1
+rm *
+find . ! -name '5.8' -maxdepth 1 -type d -exec rm -rf {} +
+cd 5.8
+find . ! -name 'gcc_64' -maxdepth 1 -type d -exec rm -rf {} +
+cd clang_64
+rm -rf doc
+cd $1
+cd ..
+tar -jcvf Qt5.8.0-linux-min.tar.bz2 $1
diff --git a/tools/StripAndTarQtForOSXMin.sh b/tools/StripAndTarQtForOSXMin.sh
new file mode 100755
index 0000000..1e16db3
--- /dev/null
+++ b/tools/StripAndTarQtForOSXMin.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+if [ $# -eq 0 ]; then
+    echo 'Qt directory must be specified as argument'
+    exit 1
+fi
+if [ ! -d $1 ] ; then
+    echo 'Qt directory not found'
+    exit 1
+fi
+cd $1
+rm *
+find . ! -name '5.8' -maxdepth 1 -type d -exec rm -rf {} +
+cd 5.8
+find . ! -name 'clang_64' -maxdepth 1 -type d -exec rm -rf {} +
+cd clang_64
+rm -rf doc
+cd lib
+rm -rf *.dSYM
+cd $1
+cd ..
+tar -jcvf Qt5.8.0-mac-clang-min.tar.bz2 $1
diff --git a/tools/StripAndTarQtForiOSMin.sh b/tools/StripAndTarQtForiOSMin.sh
new file mode 100755
index 0000000..d50e537
--- /dev/null
+++ b/tools/StripAndTarQtForiOSMin.sh
@@ -0,0 +1,23 @@
+#!/bin/bash
+if [ $# -eq 0 ]; then
+    echo 'Qt directory must be specified as argument'
+    exit 1
+fi
+if [ ! -d $1 ] ; then
+    echo 'Qt directory not found'
+    exit 1
+fi
+cd $1
+rm *
+find . ! -name '5.8' -maxdepth 1 -type d -exec rm -rf {} +
+cd 5.8
+find . ! -name 'ios' -maxdepth 1 -type d -exec rm -rf {} +
+cd ios
+rm -rf doc
+find . -type f -name 'lib*_debug.a' -delete
+find . -type f -name 'lib*_debug.la' -delete
+find . -type f -name 'lib*_debug.prl' -delete
+cd ..
+cd ..
+cd ..
+tar -jcvf Qt5.8.0-mac-ios-min.tar.bz2 $1