diff --git a/indra/newview/app_settings/settings_alchemy.xml b/indra/newview/app_settings/settings_alchemy.xml
index 64159e580bcb64a51fa2efccf4be7b84d07ee731..51033f8986d6db6cd929670435f7a83b3ae42631 100644
--- a/indra/newview/app_settings/settings_alchemy.xml
+++ b/indra/newview/app_settings/settings_alchemy.xml
@@ -361,9 +361,9 @@
       <key>Persist</key>
       <integer>1</integer>
       <key>Type</key>
-      <string>S32</string>
+      <string>Boolean</string>
       <key>Value</key>
-      <integer>-1</integer>
+      <integer>0</integer>
     </map>
     <key>AlchemyLookAtShow</key>
     <map>
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index a7695495c8b69b1c87711c0f2adf868ca8e7d85c..532e087884144897088f098680b9891a370d362f 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -426,12 +426,12 @@ bool idle_startup()
 		{
 			LLNotificationsUtil::add("DisplaySetToRecommendedFeatureChange");
 		}
-		else if ( ! lastGPU.empty() && (gSavedSettings.getS32("AlchemyKeepSettingsOnGPUChange") == -1) && (lastGPU != thisGPU))
+		else if ( ! lastGPU.empty() && lastGPU != thisGPU && !gSavedSettings.getBool("AlchemyKeepSettingsOnGPUChange"))
 		{
 			LLSD subs;
 			subs["LAST_GPU"] = lastGPU;
 			subs["THIS_GPU"] = thisGPU;
-			LLNotificationsUtil::add("AskForDisplayPreferencesReset", subs, callbackConfirmDisplayPreferencesReset);
+			LLNotificationsUtil::add("AskForDisplayPreferencesReset", subs, LLSD(), callbackConfirmDisplayPreferencesReset);
 		}
 		else if (!gViewerWindow->getInitAlert().empty())
 		{
@@ -3863,20 +3863,12 @@ void handleLoadChatAlertSounds()
 
 bool callbackConfirmDisplayPreferencesReset(const LLSD& notification, const LLSD& response)
 {
-	S32 option = LLNotification::getSelectedOption(notification, response);
-	switch (option)
+	S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
+	if (0 == option)
 	{
-	case 0: // Yes
 		LLFeatureManager::getInstance()->applyRecommendedSettings();
-		break;
-	case 1: // No
-		break;
-	case -1: // Cancel/window closed
-		break;
-	default:
-		// Don't ask again
-		gSavedSettings.setS32("AlchemyKeepSettingsOnGPUChange", 1);
-		break;
 	}
+	gSavedSettings.setBOOL("AlchemyKeepSettingsOnGPUChange", (2 == option));
+	gSavedSettings.saveToFile(gSavedSettings.getString("ClientSettingsFile"), TRUE);
 	return false;
-}
\ No newline at end of file
+}
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index e1512f7cb69464b0a4f452a5bb303988ae2909fe..29808879074b2e0ad6fa815a6095260e9ef856fe 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -2034,7 +2034,7 @@ LLViewerWindow::LLViewerWindow(const Params& p)
 		|| (gSavedSettings.getString("LastGPUString") != LLFeatureManager::getInstance()->getGPUString())
 		|| (gSavedSettings.getBOOL("ProbeHardwareOnStartup")))
 	{
-		if (gSavedSettings.getS32("AlchemyKeepSettingsOnGPUChange") < 1)
+		if (!gSavedSettings.getBool("AlchemyKeepSettingsOnGPUChange"))
 		{
 			LLFeatureManager::getInstance()->applyRecommendedSettings();
 		}