diff --git a/src/FactSystem/Fact.cc b/src/FactSystem/Fact.cc
index 565fe3b921ac5b8468f490420fa72295d07b25e7..641fe22fe69b591be6024634aff6fd214bbe9648 100644
--- a/src/FactSystem/Fact.cc
+++ b/src/FactSystem/Fact.cc
@@ -31,8 +31,7 @@ Fact::Fact(QObject* parent)
     FactMetaData* metaData = new FactMetaData(_type, this);
     setMetaData(metaData);
 
-    // Better safe than sorry on object ownership
-    QQmlEngine::setObjectOwnership(this, QQmlEngine::CppOwnership);
+    _init();
 }
 
 Fact::Fact(int componentId, QString name, FactMetaData::ValueType_t type, QObject* parent)
@@ -48,7 +47,8 @@ Fact::Fact(int componentId, QString name, FactMetaData::ValueType_t type, QObjec
 {
     FactMetaData* metaData = new FactMetaData(_type, this);
     setMetaData(metaData);
-    QQmlEngine::setObjectOwnership(this, QQmlEngine::CppOwnership);
+
+    _init();
 }
 
 Fact::Fact(const QString& settingsGroup, FactMetaData* metaData, QObject* parent)
@@ -64,13 +64,22 @@ Fact::Fact(const QString& settingsGroup, FactMetaData* metaData, QObject* parent
 {
     qgcApp()->toolbox()->corePlugin()->adjustSettingMetaData(settingsGroup, *metaData);
     setMetaData(metaData, true /* setDefaultFromMetaData */);
+
+    _init();
 }
 
 Fact::Fact(const Fact& other, QObject* parent)
     : QObject(parent)
 {
     *this = other;
+
+    _init();
+}
+
+void Fact::_init(void)
+{
     QQmlEngine::setObjectOwnership(this, QQmlEngine::CppOwnership);
+    connect(this, &Fact::_containerRawValueChanged, this, &Fact::_checkForRebootMessaging);
 }
 
 const Fact& Fact::operator=(const Fact& other)
@@ -589,10 +598,20 @@ QVariant Fact::clamp(const QString& cookedValue)
     return QVariant();
 }
 
-bool Fact::rebootRequired(void) const
+bool Fact::vehicleRebootRequired(void) const
 {
     if (_metaData) {
-        return _metaData->rebootRequired();
+        return _metaData->vehicleRebootRequired();
+    } else {
+        qWarning() << kMissingMetadata << name();
+        return false;
+    }
+}
+
+bool Fact::qgcRebootRequired(void) const
+{
+    if (_metaData) {
+        return _metaData->qgcRebootRequired();
     } else {
         qWarning() << kMissingMetadata << name();
         return false;
@@ -706,3 +725,14 @@ FactValueSliderListModel* Fact::valueSliderModel(void)
     }
     return _valueSliderModel;
 }
+
+void Fact::_checkForRebootMessaging(void)
+{
+    if (!qgcApp()->runningUnitTests()) {
+        if (vehicleRebootRequired()) {
+            qgcApp()->showMessage(tr("Change of parameter %1 requires a Vehicle reboot to take effect.").arg(name()));
+        } else if (qgcRebootRequired()) {
+            qgcApp()->showMessage(tr("Change of '%1' value requires restart of %2 to take effect.").arg(shortDescription()).arg(qgcApp()->applicationName()));
+        }
+    }
+}
diff --git a/src/FactSystem/Fact.h b/src/FactSystem/Fact.h
index e409236ccb12635174d7125aeafd81e5af7e33ed..7faf62cb34abf134dfd947694cde48b3d0af1047 100644
--- a/src/FactSystem/Fact.h
+++ b/src/FactSystem/Fact.h
@@ -61,7 +61,8 @@ public:
     Q_PROPERTY(QString      minString               READ cookedMinString                                    CONSTANT)
     Q_PROPERTY(bool         minIsDefaultForType     READ minIsDefaultForType                                CONSTANT)
     Q_PROPERTY(QString      name                    READ name                                               CONSTANT)
-    Q_PROPERTY(bool         rebootRequired          READ rebootRequired                                     CONSTANT)
+    Q_PROPERTY(bool         vehicleRebootRequired   READ vehicleRebootRequired                              CONSTANT)
+    Q_PROPERTY(bool         qgcRebootRequired       READ qgcRebootRequired                                  CONSTANT)
     Q_PROPERTY(QString      shortDescription        READ shortDescription                                   CONSTANT)
     Q_PROPERTY(QString      units                   READ cookedUnits                                        CONSTANT)
     Q_PROPERTY(QVariant     value                   READ cookedValue            WRITE setCookedValue        NOTIFY valueChanged)
@@ -116,7 +117,8 @@ public:
     QString         rawValueString          (void) const;
     QString         cookedValueString       (void) const;
     bool            valueEqualsDefault      (void) const;
-    bool            rebootRequired          (void) const;
+    bool            vehicleRebootRequired   (void) const;
+    bool            qgcRebootRequired       (void) const;
     QString         enumOrValueString       (void);         // This is not const, since an unknown value can modify the enum lists
     double          rawIncrement            (void) const;
     double          cookedIncrement         (void) const;
@@ -186,6 +188,12 @@ signals:
     ///
     /// This signal is meant for use by Fact container implementations. Used to send changed values to vehicle.
     void _containerRawValueChanged(const QVariant& value);
+
+private slots:
+    void _checkForRebootMessaging(void);
+
+private:
+    void _init(void);
     
 protected:
     QString _variantToString(const QVariant& variant, int decimalPlaces) const;
diff --git a/src/FactSystem/FactMetaData.cc b/src/FactSystem/FactMetaData.cc
index 4a9c5aa407909d0d273d288d603a127ebeaac9c4..4d07e198b64cba2da5b01b702edf799cfd485e83 100644
--- a/src/FactSystem/FactMetaData.cc
+++ b/src/FactSystem/FactMetaData.cc
@@ -80,6 +80,7 @@ const char* FactMetaData::_minJsonKey =                 "min";
 const char* FactMetaData::_maxJsonKey =                 "max";
 const char* FactMetaData::_incrementJsonKey =           "increment";
 const char* FactMetaData::_hasControlJsonKey =          "control";
+const char* FactMetaData::_qgcRebootRequiredJsonKey =   "qgcRebootRequired";
 
 FactMetaData::FactMetaData(QObject* parent)
     : QObject               (parent)
@@ -93,7 +94,8 @@ FactMetaData::FactMetaData(QObject* parent)
     , _minIsDefaultForType  (true)
     , _rawTranslator        (_defaultTranslator)
     , _cookedTranslator     (_defaultTranslator)
-    , _rebootRequired       (false)
+    , _vehicleRebootRequired(false)
+    , _qgcRebootRequired    (false)
     , _rawIncrement         (std::numeric_limits<double>::quiet_NaN())
     , _hasControl           (true)
     , _readOnly             (false)
@@ -116,7 +118,8 @@ FactMetaData::FactMetaData(ValueType_t type, QObject* parent)
     , _minIsDefaultForType  (true)
     , _rawTranslator        (_defaultTranslator)
     , _cookedTranslator     (_defaultTranslator)
-    , _rebootRequired       (false)
+    , _vehicleRebootRequired(false)
+    , _qgcRebootRequired    (false)
     , _rawIncrement         (std::numeric_limits<double>::quiet_NaN())
     , _hasControl           (true)
     , _readOnly             (false)
@@ -146,7 +149,8 @@ FactMetaData::FactMetaData(ValueType_t type, const QString name, QObject* parent
     , _name                 (name)
     , _rawTranslator        (_defaultTranslator)
     , _cookedTranslator     (_defaultTranslator)
-    , _rebootRequired       (false)
+    , _vehicleRebootRequired(false)
+    , _qgcRebootRequired    (false)
     , _rawIncrement         (std::numeric_limits<double>::quiet_NaN())
     , _hasControl           (true)
     , _readOnly             (false)
@@ -180,7 +184,8 @@ const FactMetaData& FactMetaData::operator=(const FactMetaData& other)
     _cookedUnits            = other._cookedUnits;
     _rawTranslator          = other._rawTranslator;
     _cookedTranslator       = other._cookedTranslator;
-    _rebootRequired         = other._rebootRequired;
+    _vehicleRebootRequired  = other._vehicleRebootRequired;
+    _qgcRebootRequired      = other._qgcRebootRequired;
     _rawIncrement           = other._rawIncrement;
     _hasControl             = other._hasControl;
     _readOnly               = other._readOnly;
@@ -363,7 +368,7 @@ bool FactMetaData::convertAndValidateRaw(const QVariant& rawValue, bool convertO
         typedValue = QVariant(rawValue.toFloat(&convertOk));
         if (!convertOnly && convertOk) {
             if (typedValue < rawMin() || typedValue > rawMax()) {
-                errorString = tr("Value must be within %1 and %2").arg(rawMin().toFloat()).arg(rawMax().toFloat());
+                errorString = tr("Value must be within %1 and %2").arg(rawMin().toDouble()).arg(rawMax().toDouble());
             }
         }
         break;
@@ -1065,15 +1070,16 @@ FactMetaData* FactMetaData::createFromJsonObject(const QJsonObject& json, QObjec
     }
 
     QList<JsonHelper::KeyValidateInfo> keyInfoList = {
-        { _nameJsonKey,             QJsonValue::String, true },
-        { _typeJsonKey,             QJsonValue::String, true },
-        { _shortDescriptionJsonKey, QJsonValue::String, false },
-        { _longDescriptionJsonKey,  QJsonValue::String, false },
-        { _unitsJsonKey,            QJsonValue::String, false },
-        { _decimalPlacesJsonKey,    QJsonValue::Double, false },
-        { _minJsonKey,              QJsonValue::Double, false },
-        { _maxJsonKey,              QJsonValue::Double, false },
-        { _hasControlJsonKey,       QJsonValue::Bool,   false },
+        { _nameJsonKey,                 QJsonValue::String, true },
+        { _typeJsonKey,                 QJsonValue::String, true },
+        { _shortDescriptionJsonKey,     QJsonValue::String, false },
+        { _longDescriptionJsonKey,      QJsonValue::String, false },
+        { _unitsJsonKey,                QJsonValue::String, false },
+        { _decimalPlacesJsonKey,        QJsonValue::Double, false },
+        { _minJsonKey,                  QJsonValue::Double, false },
+        { _maxJsonKey,                  QJsonValue::Double, false },
+        { _hasControlJsonKey,           QJsonValue::Bool,   false },
+        { _qgcRebootRequiredJsonKey,    QJsonValue::Bool,   false },
     };
     if (!JsonHelper::validateKeys(json, keyInfoList, errorString)) {
         qWarning() << errorString;
@@ -1189,6 +1195,12 @@ FactMetaData* FactMetaData::createFromJsonObject(const QJsonObject& json, QObjec
         metaData->setHasControl(true);
     }
 
+    if (json.contains(_qgcRebootRequiredJsonKey)) {
+        metaData->setQGCRebootRequired(json[_qgcRebootRequiredJsonKey].toBool());
+    } else {
+        metaData->setQGCRebootRequired(false);
+    }
+
     return metaData;
 }
 
diff --git a/src/FactSystem/FactMetaData.h b/src/FactSystem/FactMetaData.h
index da0ee47e155944d61122b65945ac9ee6a4b48ca5..e2415152b19f1e65db74fa28befe5d5af7a92e28 100644
--- a/src/FactSystem/FactMetaData.h
+++ b/src/FactSystem/FactMetaData.h
@@ -103,7 +103,8 @@ public:
     ValueType_t     type                    (void) const { return _type; }
     QString         rawUnits                (void) const { return _rawUnits; }
     QString         cookedUnits             (void) const { return _cookedUnits; }
-    bool            rebootRequired          (void) const { return _rebootRequired; }
+    bool            vehicleRebootRequired   (void) const { return _vehicleRebootRequired; }
+    bool            qgcRebootRequired       (void) const { return _qgcRebootRequired; }
     bool            hasControl              (void) const { return _hasControl; }
     bool            readOnly                (void) const { return _readOnly; }
     bool            writeOnly               (void) const { return _writeOnly; }
@@ -123,24 +124,25 @@ public:
     /// Used to add new values to the enum lists after the meta data has been loaded
     void addEnumInfo(const QString& name, const QVariant& value);
 
-    void setDecimalPlaces   (int decimalPlaces)                 { _decimalPlaces = decimalPlaces; }
-    void setRawDefaultValue (const QVariant& rawDefaultValue);
-    void setBitmaskInfo     (const QStringList& strings, const QVariantList& values);
-    void setEnumInfo        (const QStringList& strings, const QVariantList& values);
-    void setCategory        (const QString& category)           { _category = category; }
-    void setGroup           (const QString& group)              { _group = group; }
-    void setLongDescription (const QString& longDescription)    { _longDescription = longDescription;}
-    void setRawMax          (const QVariant& rawMax);
-    void setRawMin          (const QVariant& rawMin);
-    void setName            (const QString& name)               { _name = name; }
-    void setShortDescription(const QString& shortDescription)   { _shortDescription = shortDescription; }
-    void setRawUnits        (const QString& rawUnits);
-    void setRebootRequired  (bool rebootRequired)               { _rebootRequired = rebootRequired; }
-    void setRawIncrement    (double increment)                  { _rawIncrement = increment; }
-    void setHasControl      (bool bValue)                       { _hasControl = bValue; }
-    void setReadOnly        (bool bValue)                       { _readOnly = bValue; }
-    void setWriteOnly       (bool bValue)                       { _writeOnly = bValue; }
-    void setVolatileValue   (bool bValue);
+    void setDecimalPlaces           (int decimalPlaces)                 { _decimalPlaces = decimalPlaces; }
+    void setRawDefaultValue         (const QVariant& rawDefaultValue);
+    void setBitmaskInfo             (const QStringList& strings, const QVariantList& values);
+    void setEnumInfo                (const QStringList& strings, const QVariantList& values);
+    void setCategory                (const QString& category)           { _category = category; }
+    void setGroup                   (const QString& group)              { _group = group; }
+    void setLongDescription         (const QString& longDescription)    { _longDescription = longDescription;}
+    void setRawMax                  (const QVariant& rawMax);
+    void setRawMin                  (const QVariant& rawMin);
+    void setName                    (const QString& name)               { _name = name; }
+    void setShortDescription        (const QString& shortDescription)   { _shortDescription = shortDescription; }
+    void setRawUnits                (const QString& rawUnits);
+    void setVehicleRebootRequired   (bool rebootRequired)               { _vehicleRebootRequired = rebootRequired; }
+    void setQGCRebootRequired       (bool rebootRequired)               { _qgcRebootRequired = rebootRequired; }
+    void setRawIncrement            (double increment)                  { _rawIncrement = increment; }
+    void setHasControl              (bool bValue)                       { _hasControl = bValue; }
+    void setReadOnly                (bool bValue)                       { _readOnly = bValue; }
+    void setWriteOnly               (bool bValue)                       { _writeOnly = bValue; }
+    void setVolatileValue           (bool bValue);
 
     void setTranslators(Translator rawTranslator, Translator cookedTranslator);
 
@@ -248,7 +250,8 @@ private:
     QString         _cookedUnits;
     Translator      _rawTranslator;
     Translator      _cookedTranslator;
-    bool            _rebootRequired;
+    bool            _vehicleRebootRequired;
+    bool            _qgcRebootRequired;
     double          _rawIncrement;
     bool            _hasControl;
     bool            _readOnly;
@@ -276,18 +279,19 @@ private:
 
     static const AppSettingsTranslation_s _rgAppSettingsTranslations[];
 
-    static const char*  _nameJsonKey;
-    static const char*  _decimalPlacesJsonKey;
-    static const char*  _typeJsonKey;
-    static const char*  _shortDescriptionJsonKey;
-    static const char*  _longDescriptionJsonKey;
-    static const char*  _unitsJsonKey;
-    static const char*  _defaultValueJsonKey;
-    static const char*  _mobileDefaultValueJsonKey;
-    static const char*  _minJsonKey;
-    static const char*  _maxJsonKey;
-    static const char*  _incrementJsonKey;
+    static const char* _nameJsonKey;
+    static const char* _decimalPlacesJsonKey;
+    static const char* _typeJsonKey;
+    static const char* _shortDescriptionJsonKey;
+    static const char* _longDescriptionJsonKey;
+    static const char* _unitsJsonKey;
+    static const char* _defaultValueJsonKey;
+    static const char* _mobileDefaultValueJsonKey;
+    static const char* _minJsonKey;
+    static const char* _maxJsonKey;
+    static const char* _incrementJsonKey;
     static const char* _hasControlJsonKey;
+    static const char* _qgcRebootRequiredJsonKey;
 };
 
 #endif
diff --git a/src/FactSystem/ParameterManager.cc b/src/FactSystem/ParameterManager.cc
index 78fe43f0c55e5b250c0388f381946a6be8d49b50..0ae8221c6d9f66ea9f7329d33554e5293a75832f 100644
--- a/src/FactSystem/ParameterManager.cc
+++ b/src/FactSystem/ParameterManager.cc
@@ -403,10 +403,6 @@ void ParameterManager::_valueUpdated(const QVariant& value)
 
     _writeParameterRaw(componentId, fact->name(), value);
     qCDebug(ParameterManagerLog) << _logVehiclePrefix(componentId) << "Set parameter - name:" << name << value << "(_waitingParamTimeoutTimer started)";
-
-    if (fact->rebootRequired() && !qgcApp()->runningUnitTests()) {
-        qgcApp()->showMessage(tr("Change of parameter %1 requires a Vehicle reboot to take effect").arg(name));
-    }
 }
 
 void ParameterManager::refreshAllParameters(uint8_t componentId)
diff --git a/src/FirmwarePlugin/APM/APMParameterMetaData.cc b/src/FirmwarePlugin/APM/APMParameterMetaData.cc
index d297313e7c4cec9d3d23eba6ff337361597f4458..945eda943c4b6a84ef8a3424416787a3f2aca459 100644
--- a/src/FirmwarePlugin/APM/APMParameterMetaData.cc
+++ b/src/FirmwarePlugin/APM/APMParameterMetaData.cc
@@ -443,7 +443,7 @@ void APMParameterMetaData::addMetaDataToFact(Fact* fact, MAV_TYPE vehicleType)
     metaData->setName(rawMetaData->name);
     metaData->setCategory(rawMetaData->category);
     metaData->setGroup(rawMetaData->group);
-    metaData->setRebootRequired(rawMetaData->rebootRequired);
+    metaData->setVehicleRebootRequired(rawMetaData->rebootRequired);
 
     if (!rawMetaData->shortDescription.isEmpty()) {
         metaData->setShortDescription(rawMetaData->shortDescription);
diff --git a/src/FirmwarePlugin/PX4/PX4ParameterMetaData.cc b/src/FirmwarePlugin/PX4/PX4ParameterMetaData.cc
index 5654a2a9c8cb81695e5b7800fe43fd7f2e7ac0cb..ea8c83b1a74d60cff0ef19407f8e09e18bcaa6d9 100644
--- a/src/FirmwarePlugin/PX4/PX4ParameterMetaData.cc
+++ b/src/FirmwarePlugin/PX4/PX4ParameterMetaData.cc
@@ -305,7 +305,7 @@ void PX4ParameterMetaData::loadParameterFactMetaDataFile(const QString& metaData
                             QString text = xml.readElementText();
                             qCDebug(PX4ParameterMetaDataLog) << "RebootRequired:" << text;
                             if (text.compare("true", Qt::CaseInsensitive) == 0) {
-                                metaData->setRebootRequired(true);
+                                metaData->setVehicleRebootRequired(true);
                             }
 
                         } else if (elementName == "values") {
diff --git a/src/Settings/App.SettingsGroup.json b/src/Settings/App.SettingsGroup.json
index c7fb3b6d551816fb143de1788370f7f4113d2e47..d8fc6973f006198fcb93b448303c6eddc263b792 100644
--- a/src/Settings/App.SettingsGroup.json
+++ b/src/Settings/App.SettingsGroup.json
@@ -125,14 +125,15 @@
     "defaultValue":     false
 },
 {
-    "name":             "BaseDeviceFontPointSize",
-    "shortDescription": "Application font size",
-    "longDescription":  "The point size for the default font used.",
-    "type":             "uint32",
-    "units":            "pt",
-    "min":              6,
-    "max":              48,
-    "defaultValue":     0
+    "name":                 "BaseDeviceFontPointSize",
+    "shortDescription":     "Application font size",
+    "longDescription":      "The point size for the default font used.",
+    "type":                 "uint32",
+    "units":                "pt",
+    "min":                  6,
+    "max":                  48,
+    "defaultValue":         0,
+    "qgcRebootRequired":    true
 },
 {
     "name":             "StyleIsDark",
diff --git a/src/Settings/RTK.SettingsGroup.json b/src/Settings/RTK.SettingsGroup.json
index 4283c69696b980d55aaacbca0f36a9a1eca32ea1..bd4d54ee8216a306903e94198500a990a53c59a2 100644
--- a/src/Settings/RTK.SettingsGroup.json
+++ b/src/Settings/RTK.SettingsGroup.json
@@ -1,22 +1,24 @@
 [
 {
-    "name":             "SurveyInAccuracyLimit",
-    "shortDescription": "Survey in accuracy limit",
-    "longDescription":  "The maximum accuracy allowed prior to completing survey in.",
-    "type":             "double",
-    "defaultValue":     2.0,
-    "min":              0.5,
-    "units":            "m",
-    "decimalPlaces":    1
+    "name":                 "SurveyInAccuracyLimit",
+    "shortDescription":     "Survey in accuracy (U-blox only)",
+    "longDescription":      "The maximum accuracy allowed prior to completing survey in.",
+    "type":                 "double",
+    "defaultValue":         2.0,
+    "min":                  0.5,
+    "units":                "m",
+    "decimalPlaces":        1,
+    "qgcRebootRequired":    true
 },
 {
-    "name":             "SurveyInMinObservationDuration",
-    "shortDescription": "Minimum observation time",
-    "longDescription":  "Defines the minimum amount of observation time for the position calculation.",
-    "type":             "Uint32",
-    "defaultValue":     180,
-    "min":              1,
-    "units":            "secs",
-    "decimalPlaces":    0
+    "name":                 "SurveyInMinObservationDuration",
+    "shortDescription":     "Minimum observation time",
+    "longDescription":      "Defines the minimum amount of observation time for the position calculation.",
+    "type":                 "Uint32",
+    "defaultValue":         180,
+    "min":                  1,
+    "units":                "secs",
+    "decimalPlaces":        0,
+    "qgcRebootRequired":    true
 }
 ]
diff --git a/src/Settings/UnitsSettings.cc b/src/Settings/UnitsSettings.cc
index bab937858c3e79b8b3a83169f36f0152326f314c..86e37468d7a2b02a016e6163ff3dcc9d9ef9cf80 100644
--- a/src/Settings/UnitsSettings.cc
+++ b/src/Settings/UnitsSettings.cc
@@ -43,8 +43,10 @@ Fact* UnitsSettings::distanceUnits(void)
         
         FactMetaData* metaData = new FactMetaData(FactMetaData::valueTypeUint32, this);
         metaData->setName(distanceUnitsSettingsName);
+        metaData->setShortDescription(tr("Distance units"));
         metaData->setEnumInfo(enumStrings, enumValues);
         metaData->setRawDefaultValue(DistanceUnitsMeters);
+        metaData->setQGCRebootRequired(true);
 
         _distanceUnitsFact = new SettingsFact(_settingsGroup, metaData, this);
 
@@ -66,8 +68,10 @@ Fact* UnitsSettings::areaUnits(void)
 
         FactMetaData* metaData = new FactMetaData(FactMetaData::valueTypeUint32, this);
         metaData->setName(areaUnitsSettingsName);
+        metaData->setShortDescription(tr("Area units"));
         metaData->setEnumInfo(enumStrings, enumValues);
         metaData->setRawDefaultValue(AreaUnitsSquareMeters);
+        metaData->setQGCRebootRequired(true);
 
         _areaUnitsFact = new SettingsFact(_settingsGroup, metaData, this);
     }
@@ -88,8 +92,10 @@ Fact* UnitsSettings::speedUnits(void)
 
         FactMetaData* metaData = new FactMetaData(FactMetaData::valueTypeUint32, this);
         metaData->setName(speedUnitsSettingsName);
+        metaData->setShortDescription(tr("Speed units"));
         metaData->setEnumInfo(enumStrings, enumValues);
         metaData->setRawDefaultValue(SpeedUnitsMetersPerSecond);
+        metaData->setQGCRebootRequired(true);
 
         _speedUnitsFact = new SettingsFact(_settingsGroup, metaData, this);
     }
@@ -109,8 +115,10 @@ Fact* UnitsSettings::temperatureUnits(void)
 
         FactMetaData* metaData = new FactMetaData(FactMetaData::valueTypeUint32, this);
         metaData->setName(temperatureUnitsSettingsName);
+        metaData->setShortDescription(tr("Temperature units"));
         metaData->setEnumInfo(enumStrings, enumValues);
         metaData->setRawDefaultValue(TemperatureUnitsCelsius);
+        metaData->setQGCRebootRequired(true);
 
         _temperatureUnitsFact = new SettingsFact(_settingsGroup, metaData, this);
     }
diff --git a/src/ui/preferences/GeneralSettings.qml b/src/ui/preferences/GeneralSettings.qml
index a82c319726efea81cd9eeca296955771b82a9d79..52b3767c815e465ec7db7fbf7a68c9ffabfb4f5b 100644
--- a/src/ui/preferences/GeneralSettings.qml
+++ b/src/ui/preferences/GeneralSettings.qml
@@ -38,7 +38,7 @@ QGCView {
     property Fact _userBrandImageOutdoor:       QGroundControl.settingsManager.brandImageSettings.userBrandImageOutdoor
     property real _labelWidth:                  ScreenTools.defaultFontPixelWidth * 20
     property real _comboFieldWidth:             ScreenTools.defaultFontPixelWidth * 25
-    property real _valueFieldWidth:             ScreenTools.defaultFontPixelWidth * 8
+    property real _valueFieldWidth:             ScreenTools.defaultFontPixelWidth * 10
     property Fact _mapProvider:                 QGroundControl.settingsManager.flightMapSettings.mapProvider
     property Fact _mapType:                     QGroundControl.settingsManager.flightMapSettings.mapType
     property Fact _followTarget:                QGroundControl.settingsManager.appSettings.followTarget
@@ -47,8 +47,6 @@ QGCView {
 
     readonly property real _internalWidthRatio:          0.8
 
-    readonly property string _requiresRestart:  qsTr("(Requires Restart)")
-
     QGCPalette { id: qgcPal }
 
     QGCViewPanel {
@@ -72,7 +70,7 @@ QGCView {
 
                     QGCLabel {
                         id:         unitsSectionLabel
-                        text:       qsTr("Units (Requires Restart)")
+                        text:       qsTr("Units")
                         visible:    QGroundControl.settingsManager.unitsSettings.visible
                     }
                     Rectangle {
@@ -233,9 +231,6 @@ QGCView {
                                             }
                                         }
                                     }
-                                    QGCLabel {
-                                        text: _requiresRestart
-                                    }
                                 }
 
 
@@ -384,7 +379,7 @@ QGCView {
 
                     QGCLabel {
                         id:         rtkSectionLabel
-                        text:       qsTr("RTK GPS (Requires Restart)")
+                        text:       qsTr("RTK GPS")
                         visible:    QGroundControl.settingsManager.rtkSettings.visible
                     }
                     Rectangle {
@@ -402,16 +397,18 @@ QGCView {
                             anchors.horizontalCenter:   parent.horizontalCenter
                             columns:                    2
 
-                            QGCLabel { text: qsTr("Survey in accuracy (U-blox only)") }
+                            property var rtkSettings: QGroundControl.settingsManager.rtkSettings
+
+                            QGCLabel { text: rtkGrid.rtkSettings.surveyInAccuracyLimit.shortDescription }
                             FactTextField {
                                 Layout.preferredWidth:  _valueFieldWidth
-                                fact:                   QGroundControl.settingsManager.rtkSettings.surveyInAccuracyLimit
+                                fact:                   rtkGrid.rtkSettings.surveyInAccuracyLimit
                             }
 
-                            QGCLabel { text: qsTr("Minimum observation duration") }
+                            QGCLabel { text: rtkGrid.rtkSettings.surveyInMinObservationDuration.shortDescription }
                             FactTextField {
                                 Layout.preferredWidth:  _valueFieldWidth
-                                fact:                   QGroundControl.settingsManager.rtkSettings.surveyInMinObservationDuration
+                                fact:                   rtkGrid.rtkSettings.surveyInMinObservationDuration
                             }
                         }
                     }