diff --git a/indra/newview/llfloaterperformance.cpp b/indra/newview/llfloaterperformance.cpp
index 5eb58b9482e96c62b48d18eed0ba9e48bef08160..e35fa5556464dc4bf329df0a7ee28f2b2cb17d44 100644
--- a/indra/newview/llfloaterperformance.cpp
+++ b/indra/newview/llfloaterperformance.cpp
@@ -39,6 +39,7 @@
 #include "llnamelistctrl.h"
 #include "llnotificationsutil.h"
 #include "llperfstats.h"
+#include "llpresetsmanager.h"
 #include "llradiogroup.h"
 #include "llsliderctrl.h"
 #include "lltextbox.h"
@@ -158,6 +159,8 @@ BOOL LLFloaterPerformance::postBuild()
     mStartAutotuneBtn->setCommitCallback(boost::bind(&LLFloaterPerformance::startAutotune, this));
     mStopAutotuneBtn->setCommitCallback(boost::bind(&LLFloaterPerformance::stopAutotune, this));
 
+    gSavedPerAccountSettings.declareBOOL("HadEnabledAutoFPS", FALSE, "User had enabled AutoFPS at least once", LLControlVariable::PERSIST_ALWAYS);
+
     return TRUE;
 }
 
@@ -188,7 +191,10 @@ void LLFloaterPerformance::showAutoadjustmentsPanel()
 
 void LLFloaterPerformance::draw()
 {
-    if (mUpdateTimer->hasExpired())
+    enableAutotuneWarning();
+
+    if (mUpdateTimer->hasExpired() && 
+        !LLFloaterReg::instanceVisible("save_pref_preset", PRESETS_GRAPHIC)) // give user a chance to save the graphics settings before updating them
     {
         setFPSText();
         if (mHUDsPanel->getVisible())
@@ -672,4 +678,22 @@ void LLFloaterPerformance::updateAutotuneCtrls(bool autotune_enabled)
     getChild<LLTextBox>("wip_desc")->setVisible(autotune_enabled && !auto_tune_locked);
     getChild<LLTextBox>("display_desc")->setVisible(LLPerfStats::tunables.vsyncEnabled);
 }
+
+void LLFloaterPerformance::enableAutotuneWarning()
+{
+    if (!gSavedPerAccountSettings.getBOOL("HadEnabledAutoFPS") && LLPerfStats::tunables.userAutoTuneEnabled)
+    {
+        gSavedPerAccountSettings.setBOOL("HadEnabledAutoFPS", TRUE);
+
+        LLNotificationsUtil::add("EnableAutoFPSWarning", LLSD(), LLSD(),
+            [](const LLSD& notif, const LLSD& resp)
+            {
+                S32 opt = LLNotificationsUtil::getSelectedOption(notif, resp);
+                if (opt == 0)
+                { // offer user to save current graphics settings as a preset
+                    LLFloaterReg::showInstance("save_pref_preset", PRESETS_GRAPHIC);
+                }
+            });
+    }
+}
 // EOF
diff --git a/indra/newview/llfloaterperformance.h b/indra/newview/llfloaterperformance.h
index 648e5902b65ed8a25f8a402c3291dea9ce1225bc..00f904f6d62419654078c2859786c6ded9d70b3c 100644
--- a/indra/newview/llfloaterperformance.h
+++ b/indra/newview/llfloaterperformance.h
@@ -71,6 +71,7 @@ class LLFloaterPerformance : public LLFloater
     void startAutotune();
     void stopAutotune();
     void updateAutotuneCtrls(bool autotune_enabled);
+    void enableAutotuneWarning();
 
     void updateMaxRenderTime();
 
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index 067e5c23c9d9ce72cced19ef24b67306e39e5d34..f9211600ea041a1392ecb19f6f0c820fb147b2f8 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -11965,4 +11965,18 @@ If you want others to see this object, remove it and re-attach it to an avatar a
         yestext="OK"/>
   </notification>
 
+  <notification
+   icon="alertmodal.tga"
+   name="EnableAutoFPSWarning"
+   type="alertmodal">
+You are about to enable AutoFPS. All unsaved graphics settings will be lost.
+
+Would you like to save them first?
+      <tag>confirm</tag>
+      <usetemplate
+       name="okcancelbuttons"
+       notext="No"
+       yestext="Yes"/>
+  </notification>
+    
 </notifications>