diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp
index b58bedb363..832419a75c 100644
--- a/interface/src/Application.cpp
+++ b/interface/src/Application.cpp
@@ -1137,6 +1137,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo
     _settingsTimer.moveToThread(&_settingsThread);
     _settingsTimer.setSingleShot(false);
     _settingsTimer.setInterval(SAVE_SETTINGS_INTERVAL); // 10s, Qt::CoarseTimer acceptable
+    _settingsThread.setPriority(QThread::LowestPriority);
     _settingsThread.start();
 
     if (Menu::getInstance()->isOptionChecked(MenuOption::FirstPerson)) {
diff --git a/libraries/shared/src/SettingHandle.cpp b/libraries/shared/src/SettingHandle.cpp
index 626d7e7ef5..a04a7c3f61 100644
--- a/libraries/shared/src/SettingHandle.cpp
+++ b/libraries/shared/src/SettingHandle.cpp
@@ -74,7 +74,9 @@ void Settings::endGroup() {
 }
 
 void Settings::setValue(const QString& name, const QVariant& value) {
-    _manager->setValue(name, value);
+    if (_manager->value(name) != value) {
+        _manager->setValue(name, value);
+    }
 }
 
 QVariant Settings::value(const QString& name, const QVariant& defaultValue) const {