diff --git a/QGCExternalLibs.pri b/QGCExternalLibs.pri
index 9e08c3c..e701b98 100644
--- a/QGCExternalLibs.pri
+++ b/QGCExternalLibs.pri
@@ -362,8 +362,8 @@ contains(DEFINES, DISABLE_KINECT) {
 }
 
 #
-# [REQUIRED] EIGEN matrix library (NOMINMAX needed to make internal min/max work)
-#
+# [REQUIRED] EIGEN matrix library
+# NOMINMAX constant required to make internal min/max work.
 INCLUDEPATH += libs/eigen
 DEFINES += NOMINMAX
 
diff --git a/deploy/mac_create_dmg_shell.sh b/deploy/mac_create_dmg_shell.sh
new file mode 100644
index 0000000..2934eb8
--- /dev/null
+++ b/deploy/mac_create_dmg_shell.sh
@@ -0,0 +1,16 @@
+#!/bin/sh
+cp -r ../release/qgroundcontrol.app .
+
+
+cp -r ../files/audio qgroundcontrol.app/Contents/MacOs/.
+mkdir -p qgroundcontrol.app/Contents/Frameworks/
+mkdir -p qgroundcontrol.app/Contents/PlugIns/imageformats
+mkdir -p qgroundcontrol.app/Contents/PlugIns/codecs
+mkdir -p qgroundcontrol.app/Contents/PlugIns/accessible
+cp -r /usr/local/Cellar/qt/4.8.5/plugins/ qgroundcontrol.app/Contents/PlugIns/.
+# SDL is not copied by Qt - for whatever reason
+cp -r /Library/Frameworks/SDL.framework qgroundcontrol.app/Contents/Frameworks/.
+echo -e '\n\nStarting to create disk image. This may take a while..\n'
+macdeployqt qgroundcontrol.app -dmg
+rm -rf qgroundcontrol.app
+echo -e '\n\n QGroundControl .DMG file is now ready for publishing\n'
diff --git a/libs/opmapcontrol/src/internals/projections/lks94projection.cpp b/libs/opmapcontrol/src/internals/projections/lks94projection.cpp
index f8a37c0..4b72d57 100644
--- a/libs/opmapcontrol/src/internals/projections/lks94projection.cpp
+++ b/libs/opmapcontrol/src/internals/projections/lks94projection.cpp
@@ -28,6 +28,11 @@
 #include <qmath.h>
 
 
+// These pragmas are local modifications to this third party library to silence warnings
+#ifdef Q_OS_LINUX
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
+#endif
  
 namespace projections {
 LKS94Projection::LKS94Projection():MinLatitude  (53.33 ), MaxLatitude  (56.55 ), MinLongitude  (20.22 ),
@@ -787,3 +792,8 @@ Size LKS94Projection::GetTileMatrixMaxXY(int const& zoom)
 }
 
 }
+
+#ifdef Q_OS_LINUX
+#pragma GCC diagnostic pop
+#endif
+
diff --git a/libs/opmapcontrol/src/internals/projections/mercatorprojectionyandex.cpp b/libs/opmapcontrol/src/internals/projections/mercatorprojectionyandex.cpp
index a6a2ba3..81b47b6 100644
--- a/libs/opmapcontrol/src/internals/projections/mercatorprojectionyandex.cpp
+++ b/libs/opmapcontrol/src/internals/projections/mercatorprojectionyandex.cpp
@@ -57,6 +57,16 @@ Point MercatorProjectionYandex::FromLatLngToPixel(double lat, double lng, const
     return ret;
 
 }
+
+// These pragmas are local modifications to this third party library to silence warnings
+#ifdef Q_OS_LINUX
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
+#elif defined(Q_OS_MAC)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wunused-variable"
+#endif
+    
 internals::PointLatLng MercatorProjectionYandex::FromPixelToLatLng(const int &x, const int &y, const int &zoom)
 {
     Size s = GetTileMatrixSizePixel(zoom);
@@ -82,6 +92,11 @@ internals::PointLatLng MercatorProjectionYandex::FromPixelToLatLng(const int &x,
 
     return ret;
 }
+
+#ifndef Q_OS_WIN
+#pragma GCC diagnostic pop
+#endif
+
 double MercatorProjectionYandex::Clip(const double &n, const double &minValue, const double &maxValue) const
 {
     return qMin(qMax(n, minValue), maxValue);
diff --git a/libs/qwt/qwt_plot_spectrogram.cpp b/libs/qwt/qwt_plot_spectrogram.cpp
index 152a6a3..75622ab 100644
--- a/libs/qwt/qwt_plot_spectrogram.cpp
+++ b/libs/qwt/qwt_plot_spectrogram.cpp
@@ -533,6 +533,15 @@ QwtRasterData::ContourLines QwtPlotSpectrogram::renderContourLines(
                                       d_data->contourLevels, d_data->conrecAttributes );
 }
 
+// These pragmas are local modifications to this third party library to silence warnings
+#ifdef Q_OS_LINUX
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
+#elif defined(Q_OS_MAC)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wunused-variable"
+#endif
+
 /*!
    Paint the contour lines
 
@@ -578,6 +587,10 @@ void QwtPlotSpectrogram::drawContourLines(QPainter *painter,
     }
 }
 
+#ifndef Q_OS_WIN
+#pragma GCC diagnostic pop
+#endif
+
 /*!
   \brief Draw the spectrogram
 
diff --git a/libs/qwt/qwt_plot_zoomer.h b/libs/qwt/qwt_plot_zoomer.h
index eb27059..9904c53 100644
--- a/libs/qwt/qwt_plot_zoomer.h
+++ b/libs/qwt/qwt_plot_zoomer.h
@@ -85,8 +85,19 @@ public:
 
 public slots:
     void moveBy(double x, double y);
+
+// These pragmas are local modifications to this third party library to silence warnings
+#ifndef Q_OS_WIN
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Woverloaded-virtual"
+#endif
+    
     virtual void move(double x, double y);
 
+#ifndef Q_OS_WIN
+#pragma GCC diagnostic pop
+#endif
+
     virtual void zoom(const QwtDoubleRect &);
     virtual void zoom(int up);
 
diff --git a/libs/serialport/qserialport.pri b/libs/serialport/qserialport.pri
index 9de6a7a..1210834 100644
--- a/libs/serialport/qserialport.pri
+++ b/libs/serialport/qserialport.pri
@@ -55,4 +55,4 @@ unix:!symbian {
     }
 }
 
-HEADERS += $$PUBLIC_HEADERS $$PRIVATE_HEADERS
+HEADERS *= $$PUBLIC_HEADERS $$PRIVATE_HEADERS
diff --git a/qgroundcontrol.pro b/qgroundcontrol.pro
index bdaf67d..0120c5a 100644
--- a/qgroundcontrol.pro
+++ b/qgroundcontrol.pro
@@ -121,16 +121,23 @@ WindowsBuild {
 }
 
 #
-# Warnings cleanup. Plan of attack is to turn on warnings as error once all warnings are fixed. Please
-# do no change the warning level from what they are currently set to below.
+# We treat all warnings as errors which must be fixed before proceeding. If you run into a problem you can't fix
+# you can always use local pragmas to work around the warning. This should be used sparingly and only in cases where
+# the problem absolultey can't be fixed.
 #
 
 MacBuild | LinuxBuild {
 	QMAKE_CXXFLAGS_WARN_ON += -Wall
 }
 
+MacBuild {
+	QMAKE_CXXFLAGS_WARN_ON += -Werror
+}
+
 WindowsBuild {
-	QMAKE_CXXFLAGS_WARN_ON += /W3
+	QMAKE_CXXFLAGS_WARN_ON += /W3 \
+        /wd4996 \   # silence warnings about deprecated strcpy and whatnot
+        /wd4290     # ignore exception specifications
 }
 
 #
diff --git a/qupgrade b/qupgrade
index 2db4b38..b8b885c 160000
--- a/qupgrade
+++ b/qupgrade
@@ -1 +1 @@
-Subproject commit 2db4b382b02c3822acd19e99bc57fa53f3f53d01
+Subproject commit b8b885c610ee574140c7a6ad9bc007dcf28a74b7
diff --git a/src/GAudioOutput.cc b/src/GAudioOutput.cc
index fd36079..e7dafc5 100644
--- a/src/GAudioOutput.cc
+++ b/src/GAudioOutput.cc
@@ -115,7 +115,7 @@ GAudioOutput::GAudioOutput(QObject *parent) : QObject(parent),
 
         if (SUCCEEDED(hr))
         {
-            hr = pVoice->Speak(L"QGC audio output active!", 0, NULL);
+            //hr = pVoice->Speak(L"QGC audio output active!", 0, NULL);
             //pVoice->Release();
             //pVoice = NULL;
         }
diff --git a/src/configuration.h b/src/configuration.h
index 2f04348..a2935d8 100644
--- a/src/configuration.h
+++ b/src/configuration.h
@@ -11,7 +11,7 @@
 #define WITH_TEXT_TO_SPEECH 1
 
 #define QGC_APPLICATION_NAME "QGroundControl"
-#define QGC_APPLICATION_VERSION "v. 2.0.0 (beta)"
+#define QGC_APPLICATION_VERSION "v. 2.0.1 (beta)"
 
 namespace QGC
 
@@ -19,7 +19,7 @@ namespace QGC
 const QString APPNAME = "QGROUNDCONTROL";
 const QString ORG_NAME = "QGROUNDCONTROL.ORG"; //can be customized by forks to e.g. mycompany.com to maintain separate Settings for customized apps
 const QString ORG_DOMAIN = "org.qgroundcontrol";//can be customized by forks
-const int APPLICATIONVERSION = 200; // 2.0.0
+const int APPLICATIONVERSION = 201; // 2.0.1
 }
 
 #endif // QGC_CONFIGURATION_H
diff --git a/src/qgcunittest/MockUAS.h b/src/qgcunittest/MockUAS.h
index 418df5d..8f6ad10 100644
--- a/src/qgcunittest/MockUAS.h
+++ b/src/qgcunittest/MockUAS.h
@@ -168,6 +168,9 @@ public slots:
     virtual void sendHilGps(quint64 time_us, double lat, double lon, double alt, int fix_type, float eph, float epv, float vel, float vn, float ve, float vd, float cog, int satellites)
         { Q_UNUSED(time_us); Q_UNUSED(lat); Q_UNUSED(lon); Q_UNUSED(alt); Q_UNUSED(fix_type); Q_UNUSED(eph); Q_UNUSED(epv); Q_UNUSED(vel); Q_UNUSED(vn); Q_UNUSED(ve); Q_UNUSED(vd); Q_UNUSED(cog); Q_UNUSED(satellites); Q_ASSERT(false); };
     
+    virtual bool isRotaryWing() { Q_ASSERT(false); return false; }
+    virtual bool isFixedWing() { Q_ASSERT(false); return false; }
+
 private:
     int                 _systemType;
     int                 _systemId;
diff --git a/src/uas/UAS.cc b/src/uas/UAS.cc
index 6aa4258..93165d2 100644
--- a/src/uas/UAS.cc
+++ b/src/uas/UAS.cc
@@ -1242,7 +1242,7 @@ void UAS::receiveMessage(LinkInterface* link, mavlink_message_t message)
         }
         break;
 #endif
-#ifdef MAVLINK_ENABLED_PIXHAWK
+
         case MAVLINK_MSG_ID_DATA_TRANSMISSION_HANDSHAKE:
         {
             mavlink_data_transmission_handshake_t p;
@@ -1296,8 +1296,6 @@ void UAS::receiveMessage(LinkInterface* link, mavlink_message_t message)
             break;
 
 
-
-#endif
             //        case MAVLINK_MSG_ID_OBJECT_DETECTION_EVENT:
             //        {
             //            mavlink_object_detection_event_t event;
@@ -2061,7 +2059,6 @@ void UAS::getStatusForCode(int statusCode, QString& uasState, QString& stateDesc
 
 QImage UAS::getImage()
 {
-#ifdef MAVLINK_ENABLED_PIXHAWK
 
 //    qDebug() << "IMAGE TYPE:" << imageType;
 
@@ -2107,25 +2104,20 @@ QImage UAS::getImage()
     imagePacketsArrived = 0;
     //imageRecBuffer.clear();
     return image;
-#else
-    return QImage();
-#endif
 
 }
 
 void UAS::requestImage()
 {
-#ifdef MAVLINK_ENABLED_PIXHAWK
     qDebug() << "trying to get an image from the uas...";
 
     // check if there is already an image transmission going on
     if (imagePacketsArrived == 0)
     {
         mavlink_message_t msg;
-        mavlink_msg_data_transmission_handshake_pack(mavlink->getSystemId(), mavlink->getComponentId(), &msg, DATA_TYPE_JPEG_IMAGE, 0, 0, 0, 0, 0, 50);
+        mavlink_msg_data_transmission_handshake_pack(mavlink->getSystemId(), mavlink->getComponentId(), &msg, MAVLINK_DATA_STREAM_IMG_JPEG, 0, 0, 0, 0, 0, 50);
         sendMessage(msg);
     }
-#endif
 }
 
 
@@ -2178,6 +2170,32 @@ void UAS::readParametersFromStorage()
     sendMessage(msg);
 }
 
+bool UAS::isRotaryWing()
+{
+    switch (type) {
+        case MAV_TYPE_QUADROTOR:
+        /* fallthrough */
+        case MAV_TYPE_COAXIAL:
+        case MAV_TYPE_HELICOPTER:
+        case MAV_TYPE_HEXAROTOR:
+        case MAV_TYPE_OCTOROTOR:
+        case MAV_TYPE_TRICOPTER:
+            return true;
+        default:
+            return false;
+    }
+}
+
+bool UAS::isFixedWing()
+{
+    switch (type) {
+        case MAV_TYPE_FIXED_WING:
+            return true;
+        default:
+            return false;
+    }
+}
+
 /**
 * @param rate The update rate in Hz the message should be sent
 */
diff --git a/src/uas/UAS.h b/src/uas/UAS.h
index 9db1399..c24b3cb 100644
--- a/src/uas/UAS.h
+++ b/src/uas/UAS.h
@@ -306,6 +306,9 @@ public:
         return nedAttGlobalOffset;
     }
 
+    bool isRotaryWing();
+    bool isFixedWing();
+
 #if defined(QGC_PROTOBUF_ENABLED) && defined(QGC_USE_PIXHAWK_MESSAGES)
     px::GLOverlay getOverlay()
     {
diff --git a/src/uas/UASInterface.h b/src/uas/UASInterface.h
index 5a863a9..6395674 100644
--- a/src/uas/UASInterface.h
+++ b/src/uas/UASInterface.h
@@ -267,6 +267,9 @@ public:
      */
     virtual QList<QAction*> getActions() const = 0;
 
+    static const unsigned int WAYPOINT_RADIUS_DEFAULT_FIXED_WING = 25;
+    static const unsigned int WAYPOINT_RADIUS_DEFAULT_ROTARY_WING = 5;
+
 public slots:
 
     /** @brief Set a new name for the system */
@@ -376,6 +379,11 @@ public slots:
     virtual void startGyroscopeCalibration() = 0;
     virtual void startPressureCalibration() = 0;
 
+    /** @brief Return if this a rotary wing */
+    virtual bool isRotaryWing() = 0;
+    /** @brief Return if this is a fixed wing */
+    virtual bool isFixedWing() = 0;
+
     /** @brief Set the current battery type and voltages */
     virtual void setBatterySpecs(const QString& specs) = 0;
     /** @brief Get the current battery type and specs */
@@ -393,7 +401,6 @@ public slots:
     /** @brief Send raw GPS for sensor HIL */
     virtual void sendHilGps(quint64 time_us, double lat, double lon, double alt, int fix_type, float eph, float epv, float vel, float vn, float ve, float vd, float cog, int satellites) = 0;
 
-
 protected:
     QColor color;
 
diff --git a/src/uas/UASWaypointManager.cc b/src/uas/UASWaypointManager.cc
index 888a548..fc48a3b 100644
--- a/src/uas/UASWaypointManager.cc
+++ b/src/uas/UASWaypointManager.cc
@@ -1063,11 +1063,23 @@ int UASWaypointManager::getFrameRecommendation()
 
 float UASWaypointManager::getAcceptanceRadiusRecommendation()
 {
-    if (waypointsEditable.count() > 0) {
+    if (waypointsEditable.count() > 0)
+    {
         return waypointsEditable.last()->getAcceptanceRadius();
-    } else {
-        return 10.0f;
     }
+    else
+    {
+        if (uas->isRotaryWing())
+        {
+            return UASInterface::WAYPOINT_RADIUS_DEFAULT_ROTARY_WING;
+        }
+        else if (uas->isFixedWing())
+        {
+            return UASInterface::WAYPOINT_RADIUS_DEFAULT_FIXED_WING;
+        }
+    }
+
+    return 10.0f;
 }
 
 float UASWaypointManager::getHomeAltitudeOffsetDefault()
diff --git a/src/ui/HUD.cc b/src/ui/HUD.cc
index 58f1ab2..90b1ca0 100644
--- a/src/ui/HUD.cc
+++ b/src/ui/HUD.cc
@@ -292,8 +292,7 @@ void HUD::setActiveUAS(UASInterface* uas)
         // Try to disconnect the image link
         UAS* u = dynamic_cast<UAS*>(this->uas);
         if (u) {
-            disconnect(u, SIGNAL(imageStarted(quint64)), this, SLOT(startImage(quint64)));
-            disconnect(u, SIGNAL(imageReady(UASInterface*)), this, SLOT(copyImage()));
+            disconnect(u, SIGNAL(imageReady(UASInterface*)), this, SLOT(copyImage(UASInterface*)));
         }
     }
 
@@ -313,10 +312,9 @@ void HUD::setActiveUAS(UASInterface* uas)
         connect(uas, SIGNAL(waypointSelected(int,int)), this, SLOT(selectWaypoint(int, int)));
 
         // Try to connect the image link
-        UAS* u = dynamic_cast<UAS*>(uas);
+        UAS* u = qobject_cast<UAS*>(uas);
         if (u) {
-            connect(u, SIGNAL(imageStarted(quint64)), this, SLOT(startImage(quint64)));
-            connect(u, SIGNAL(imageReady(UASInterface*)), this, SLOT(copyImage()));
+            connect(u, SIGNAL(imageReady(UASInterface*)), this, SLOT(copyImage(UASInterface*)));
         }
     }
 
@@ -581,30 +579,12 @@ void HUD::paintHUD()
         scalingFactor = this->width()/vwidth;
         double scalingFactorH = this->height()/vheight;
         if (scalingFactorH < scalingFactor) scalingFactor = scalingFactorH;
-        // Fill with black background
-        if (videoEnabled) {
-            if (nextOfflineImage != "" && QFileInfo(nextOfflineImage).exists()) {
-                qDebug() << __FILE__ << __LINE__ << "template image:" << nextOfflineImage;
-                QImage fill = QImage(nextOfflineImage);
-
-                glImage = fill;
-
-                // Reset to save load efforts
-                nextOfflineImage = "";
-            }
-
-        }
 
         // And if either video or the data stream is enabled, draw the next frame.
-        if (dataStreamEnabled || videoEnabled)
+        if (videoEnabled)
         {
-
             xImageFactor = width() / (float)glImage.width();
             yImageFactor = height() / (float)glImage.height();
-            //float imageFactor = qMin(xImageFactor, yImageFactor);
-            // Resize to correct size and fill with image
-            // FIXME
-
         }
 
         QPainter painter;
@@ -1331,14 +1311,6 @@ void HUD::saveImage()
     saveImage(fileName);
 }
 
-void HUD::startImage(quint64 timestamp)
-{
-    if (videoEnabled && offlineDirectory != "") {
-        // Load and diplay image file
-        nextOfflineImage = QString(offlineDirectory + "/%1.bmp").arg(timestamp);
-    }
-}
-
 void HUD::selectOfflineDirectory()
 {
     QString fileName = QFileDialog::getExistingDirectory(this, tr("Select image directory"), QDesktopServices::storageLocation(QDesktopServices::DesktopLocation));
@@ -1397,9 +1369,9 @@ void HUD::setPixels(int imgid, const unsigned char* imageData, int length, int s
     }
 }
 
-void HUD::copyImage()
+void HUD::copyImage(UASInterface* uas)
 {
-    UAS* u = dynamic_cast<UAS*>(this->uas);
+    UAS* u = qobject_cast<UAS*>(uas);
     if (u)
     {
         this->glImage = u->getImage();
diff --git a/src/ui/HUD.h b/src/ui/HUD.h
index 0e69d0e..18beedf 100644
--- a/src/ui/HUD.h
+++ b/src/ui/HUD.h
@@ -81,7 +81,6 @@ public slots:
     void updateLoad(UASInterface*, double);
     void selectWaypoint(int uasId, int id);
 
-    void startImage(quint64 timestamp);
     void startImage(int imgid, int width, int height, int depth, int channels);
     void setPixels(int imgid, const unsigned char* imageData, int length, int startIndex);
     void finishImage();
@@ -95,7 +94,7 @@ public slots:
     /** @brief Enable Video */
     void enableVideo(bool enabled);
     /** @brief Copy an image from the current active UAS */
-    void copyImage();
+    void copyImage(UASInterface* uas);
 
 
 protected slots:
@@ -220,7 +219,6 @@ protected:
     QString nextOfflineImage;
     bool HUDInstrumentsEnabled;
     bool videoEnabled;
-    bool dataStreamEnabled;
     bool imageLoggingEnabled;
     float xImageFactor;
     float yImageFactor;
diff --git a/src/ui/MainWindow.cc b/src/ui/MainWindow.cc
index e2d70c7..fdbf2c1 100644
--- a/src/ui/MainWindow.cc
+++ b/src/ui/MainWindow.cc
@@ -604,8 +604,6 @@ void MainWindow::buildCommonWidgets()
 
     createDockWidget(engineeringView,new HUD(320,240,this),tr("Video Downlink"),"HEAD_UP_DISPLAY_DOCKWIDGET",VIEW_ENGINEER,Qt::RightDockWidgetArea,QSize(this->width()/1.5,0));
 
-    createDockWidget(engineeringView,new HUD(320,240,this),tr("Video Downlink"),"HEAD_UP_DISPLAY_DOCKWIDGET",VIEW_ENGINEER,Qt::RightDockWidgetArea,QSize(this->width()/1.5,0));
-
     createDockWidget(simView,new PrimaryFlightDisplay(320,240,this),tr("Primary Flight Display"),"PRIMARY_FLIGHT_DISPLAY_DOCKWIDGET",VIEW_SIMULATION,Qt::RightDockWidgetArea,QSize(this->width()/1.5,0));
     createDockWidget(pilotView,new PrimaryFlightDisplay(320,240,this),tr("Primary Flight Display"),"PRIMARY_FLIGHT_DISPLAY_DOCKWIDGET",VIEW_FLIGHT,Qt::LeftDockWidgetArea,QSize(this->width()/1.8,0));
 
@@ -786,7 +784,11 @@ void MainWindow::loadDockWidget(const QString& name)
     }
     else if (name == "PRIMARY_FLIGHT_DISPLAY_DOCKWIDGET")
     {
-        createDockWidget(centerStack->currentWidget(),new PrimaryFlightDisplay(320,240,this),tr("Primary Flight Display"),"HEAD_UP_DISPLAY_DOCKWIDGET",currentView,Qt::RightDockWidgetArea);
+        createDockWidget(centerStack->currentWidget(),new PrimaryFlightDisplay(320,240,this),tr("Primary Flight Display"),"PRIMARY_FLIGHT_DISPLAY_DOCKWIDGET",currentView,Qt::RightDockWidgetArea);
+    }
+    else if (name == "HEAD_UP_DISPLAY_DOCKWIDGET")
+    {
+        createDockWidget(centerStack->currentWidget(),new HUD(320,240,this),tr("Head Up Display"),"HEAD_UP_DISPLAY_DOCKWIDGET",currentView,Qt::RightDockWidgetArea);
     }
     else if (name == "UAS_INFO_QUICKVIEW_DOCKWIDGET")
     {
diff --git a/src/ui/QGCRGBDView.cc b/src/ui/QGCRGBDView.cc
index 9a06c04..5427082 100644
--- a/src/ui/QGCRGBDView.cc
+++ b/src/ui/QGCRGBDView.cc
@@ -103,14 +103,14 @@ void QGCRGBDView::contextMenuEvent(QContextMenuEvent* event)
 void QGCRGBDView::enableRGB(bool enabled)
 {
     rgbEnabled = enabled;
-    dataStreamEnabled = rgbEnabled | depthEnabled;
+    videoEnabled = rgbEnabled | depthEnabled;
     QWidget::resize(size().width(), size().height());
 }
 
 void QGCRGBDView::enableDepth(bool enabled)
 {
     depthEnabled = enabled;
-    dataStreamEnabled = rgbEnabled | depthEnabled;
+    videoEnabled = rgbEnabled | depthEnabled;
     QWidget::resize(size().width(), size().height());
 }
 
diff --git a/src/ui/WaypointEditableView.cc b/src/ui/WaypointEditableView.cc
index 602f4e0..8bb0c6c 100644
--- a/src/ui/WaypointEditableView.cc
+++ b/src/ui/WaypointEditableView.cc
@@ -92,6 +92,11 @@ WaypointEditableView::WaypointEditableView(Waypoint* wp, QWidget* parent) :
     m_ui->comboBox_frame->addItem("Local(NED)",MAV_FRAME_LOCAL_NED);
     m_ui->comboBox_frame->addItem("Mission",MAV_FRAME_MISSION);
 
+    // We do not want users to mess with the current waypoint in missions -
+    // they have to use the one downloaded from the MAV to change the current WP.
+    m_ui->selectedBox->setVisible(false);
+    connect(m_ui->selectedBox, SIGNAL(stateChanged(int)), this, SLOT(changedCurrent(int)));
+
     // Initialize view correctly
     int actionID = wp->getAction();
     initializeActionView(actionID);
@@ -109,7 +114,6 @@ WaypointEditableView::WaypointEditableView(Waypoint* wp, QWidget* parent) :
     connect(m_ui->removeButton, SIGNAL(clicked()), this, SLOT(remove()));
 
     connect(m_ui->autoContinue, SIGNAL(stateChanged(int)), this, SLOT(changedAutoContinue(int)));
-    connect(m_ui->selectedBox, SIGNAL(stateChanged(int)), this, SLOT(changedCurrent(int)));
     connect(m_ui->comboBox_action, SIGNAL(activated(int)), this, SLOT(changedAction(int)));
     connect(m_ui->comboBox_frame, SIGNAL(activated(int)), this, SLOT(changedFrame(int)));
 
diff --git a/src/ui/WaypointEditableView.ui b/src/ui/WaypointEditableView.ui
index 07a8784..618842e 100644
--- a/src/ui/WaypointEditableView.ui
+++ b/src/ui/WaypointEditableView.ui
@@ -29,10 +29,16 @@
    <string notr="true"/>
   </property>
   <layout class="QHBoxLayout" name="horizontalLayout">
-   <property name="spacing">
+   <property name="leftMargin">
     <number>6</number>
    </property>
-   <property name="margin">
+   <property name="topMargin">
+    <number>6</number>
+   </property>
+   <property name="rightMargin">
+    <number>6</number>
+   </property>
+   <property name="bottomMargin">
     <number>6</number>
    </property>
    <item>
@@ -62,6 +68,9 @@
    </item>
    <item>
     <widget class="QCheckBox" name="selectedBox">
+     <property name="enabled">
+      <bool>false</bool>
+     </property>
      <property name="sizePolicy">
       <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
        <horstretch>0</horstretch>
diff --git a/src/ui/WaypointList.cc b/src/ui/WaypointList.cc
index 2a207ca..673cfd1 100644
--- a/src/ui/WaypointList.cc
+++ b/src/ui/WaypointList.cc
@@ -405,6 +405,9 @@ void WaypointList::currentWaypointEditableChanged(quint16 seq)
 // Update waypointViews to correctly indicate the new current waypoint
 void WaypointList::currentWaypointViewOnlyChanged(quint16 seq)
 {
+    // First update the edit list
+    currentWaypointEditableChanged(seq);
+
     const QList<Waypoint *> &waypoints = WPM->getWaypointViewOnlyList();
 
     if (seq < waypoints.count())
@@ -423,6 +426,7 @@ void WaypointList::currentWaypointViewOnlyChanged(quint16 seq)
             }
         }
     }
+    m_ui->tabWidget->setCurrentIndex(1); // XXX magic number
 }
 
 void WaypointList::updateWaypointEditable(int uas, Waypoint* wp)
@@ -430,6 +434,7 @@ void WaypointList::updateWaypointEditable(int uas, Waypoint* wp)
     Q_UNUSED(uas);
     WaypointEditableView *wpv = wpEditableViews.value(wp);
     wpv->updateValues();
+    m_ui->tabWidget->setCurrentIndex(0); // XXX magic number
 }
 
 void WaypointList::updateWaypointViewOnly(int uas, Waypoint* wp)
@@ -437,6 +442,7 @@ void WaypointList::updateWaypointViewOnly(int uas, Waypoint* wp)
     Q_UNUSED(uas);
     WaypointViewOnlyView *wpv = wpViewOnlyViews.value(wp);
     wpv->updateValues();
+    m_ui->tabWidget->setCurrentIndex(1); // XXX magic number
 }
 
 void WaypointList::waypointViewOnlyListChanged()
@@ -488,6 +494,8 @@ void WaypointList::waypointViewOnlyListChanged()
     this->setUpdatesEnabled(true);
     loadFileGlobalWP = false;
 
+    m_ui->tabWidget->setCurrentIndex(1);
+
 }
 
 
@@ -544,7 +552,6 @@ void WaypointList::waypointEditableListChanged()
     this->setUpdatesEnabled(true);
     loadFileGlobalWP = false;
 
-
 }
 
 void WaypointList::moveUp(Waypoint* wp)
diff --git a/src/ui/WaypointList.ui b/src/ui/WaypointList.ui
index e890798..b635240 100644
--- a/src/ui/WaypointList.ui
+++ b/src/ui/WaypointList.ui
@@ -154,8 +154,8 @@
            <rect>
             <x>0</x>
             <y>0</y>
-            <width>836</width>
-            <height>316</height>
+            <width>834</width>
+            <height>325</height>
            </rect>
           </property>
           <layout class="QVBoxLayout" name="verticalLayout_2">
@@ -294,8 +294,8 @@
            <rect>
             <x>0</x>
             <y>0</y>
-            <width>836</width>
-            <height>316</height>
+            <width>834</width>
+            <height>323</height>
            </rect>
           </property>
           <property name="autoFillBackground">
diff --git a/src/ui/map3D/Q3DWidget.h b/src/ui/map3D/Q3DWidget.h
index 32b9dc4..037de8a 100644
--- a/src/ui/map3D/Q3DWidget.h
+++ b/src/ui/map3D/Q3DWidget.h
@@ -39,8 +39,20 @@ This file is part of the QGROUNDCONTROL project
 #include <osg/PositionAttitudeTransform>
 #include <osgGA/TrackballManipulator>
 #include <osgText/Font>
+
+// OpenSceneGraph has overloaded virtuals defined, since third party code we silence the warnings when the
+// headers are used.
+#ifndef Q_OS_WIN
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Woverloaded-virtual"
+#endif
+
 #include <osgViewer/Viewer>
 
+#ifndef Q_OS_WIN
+#pragma GCC diagnostic pop
+#endif
+
 #include "CameraParams.h"
 #include "GCManipulator.h"
 #include "SystemGroupNode.h"