diff --git a/indra/newview/llfloaterdeleteprefpreset.cpp b/indra/newview/llfloaterdeleteprefpreset.cpp
index 5dc51c4223355e0725978e2c5f9e6c199d62e612..bef5b4e3bf5f9e5e7374762b141a0d650f9a6f38 100644
--- a/indra/newview/llfloaterdeleteprefpreset.cpp
+++ b/indra/newview/llfloaterdeleteprefpreset.cpp
@@ -49,14 +49,14 @@ BOOL LLFloaterDeletePrefPreset::postBuild()
 
 void LLFloaterDeletePrefPreset::onOpen(const LLSD& key)
 {
-	std::string param = key.asString();
-	std::string floater_title = getString(std::string("title_") + param);
+	std::string mSubdirectory = key.asString();
+	std::string floater_title = getString(std::string("title_") + mSubdirectory);
 
 	setTitle(floater_title);
 
 	LLComboBox* combo = getChild<LLComboBox>("preset_combo");
 
-	LLPresetsManager::getInstance()->setPresetNamesInComboBox(combo);
+	LLPresetsManager::getInstance()->setPresetNamesInComboBox(mSubdirectory, combo);
 }
 
 void LLFloaterDeletePrefPreset::onBtnDelete()
@@ -64,6 +64,7 @@ void LLFloaterDeletePrefPreset::onBtnDelete()
 	LLComboBox* combo = getChild<LLComboBox>("preset_combo");
 	std::string name = combo->getSimple();
 
+	// Ignore return status
 	LLPresetsManager::getInstance()->deletePreset(name);
 }
 
@@ -71,7 +72,7 @@ void LLFloaterDeletePrefPreset::onPresetsListChange()
 {
 	LLComboBox* combo = getChild<LLComboBox>("preset_combo");
 
-	LLPresetsManager::getInstance()->setPresetNamesInComboBox(combo);
+	LLPresetsManager::getInstance()->setPresetNamesInComboBox(mSubdirectory, combo);
 }
 
 void LLFloaterDeletePrefPreset::onBtnCancel()
diff --git a/indra/newview/llfloaterdeleteprefpreset.h b/indra/newview/llfloaterdeleteprefpreset.h
index fc531ca1b76dd87c7e6236c5896c42df3064eb39..356bc1a4372b10bbc355f841323bc433cbba6f8d 100644
--- a/indra/newview/llfloaterdeleteprefpreset.h
+++ b/indra/newview/llfloaterdeleteprefpreset.h
@@ -46,6 +46,8 @@ class LLFloaterDeletePrefPreset : public LLFloater
 
 private:
 	void onPresetsListChange();
+
+	std::string mSubdirectory;
 };
 
 #endif // LL_LLFLOATERDELETEPREFPRESET_H
diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp
index 6b798f6549f84f004df9233c1b82a24ee5e43f7c..508d82522e06613654d06dbb29ceddedd89fae0d 100755
--- a/indra/newview/llfloaterpreference.cpp
+++ b/indra/newview/llfloaterpreference.cpp
@@ -749,7 +749,9 @@ void LLFloaterPreference::onOpen(const LLSD& key)
 	{
 		LL_WARNS() << "No " << default_file << " found -- creating one" << LL_ENDL;
 		// Write current graphic settings to default.xml
-		LLPresetsManager::getInstance()->savePreset("Default");
+		// If this name is to be localized additional code will be needed to delete the old default
+		// when changing languages.
+		LLPresetsManager::getInstance()->savePreset(PRESETS_GRAPHIC, "Default");
 	}
 }
 
@@ -2160,7 +2162,7 @@ void LLPanelPreferenceGraphics::setPresetNamesInComboBox()
 {
 	LLComboBox* combo = getChild<LLComboBox>("graphic_preset_combo");
 
-	LLPresetsManager::getInstance()->setPresetNamesInComboBox(combo);
+	LLPresetsManager::getInstance()->setPresetNamesInComboBox(PRESETS_GRAPHIC, combo);
 }
 
 void LLPanelPreferenceGraphics::draw()
diff --git a/indra/newview/llpresetsmanager.cpp b/indra/newview/llpresetsmanager.cpp
index 6b0023d97a0a407dd71a018fba171559fd65ba83..6e00a90ae56e6ec9cb9066172ae81e1db4312bf4 100644
--- a/indra/newview/llpresetsmanager.cpp
+++ b/indra/newview/llpresetsmanager.cpp
@@ -45,7 +45,8 @@ LLPresetsManager::~LLPresetsManager()
 {
 }
 
-std::string LLPresetsManager::getUserDir(const std::string& subdirectory)
+//std::string LLPresetsManager::getUserDir(const std::string& subdirectory)
+std::string LLPresetsManager::getPresetsDir(const std::string& subdirectory)
 {
 	std::string presets_path = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, PRESETS_DIR);
 	std::string full_path;
@@ -64,22 +65,7 @@ std::string LLPresetsManager::getUserDir(const std::string& subdirectory)
 	return full_path;
 }
 
-std::string LLPresetsManager::getCameraPresetsDir()
-{
-	return getUserDir(PRESETS_CAMERA);
-}
-
-std::string LLPresetsManager::getGraphicPresetsDir()
-{
-	return getUserDir(PRESETS_GRAPHIC);
-}
-
-void LLPresetsManager::getPresetNames(preset_name_list_t& presets) const
-{
-	presets = mPresetNames;
-}
-
-void LLPresetsManager::loadPresetNamesFromDir(const std::string& dir)
+void LLPresetsManager::loadPresetNamesFromDir(const std::string& dir, preset_name_list_t& presets)
 {
 	LL_INFOS("AppInit") << "Loading presets from " << dir << LL_ENDL;
 
@@ -106,48 +92,61 @@ void LLPresetsManager::loadPresetNamesFromDir(const std::string& dir)
 			}
 		}
 	}
+
+	presets = mPresetNames;
 }
 
-void LLPresetsManager::savePreset(const std::string& name)
+void LLPresetsManager::savePreset(const std::string& subdirectory, const std::string& name)
 {
 	llassert(!name.empty());
 
+	std::vector<std::string> name_list;
 	// This ugliness is the current list of all the control variables in the graphics and hardware
-	// preferences floaters.  Additions or subtractions to the floaters must also be reflected here.
-	std::vector<std::string> name_list = boost::assign::list_of
-		("RenderQualityPerformance")
-		("RenderFarClip")
-		("RenderMaxPartCount")
-		("RenderGlowResolutionPow")
-		("RenderTerrainDetail")
-		("RenderAvatarLODFactor")
-		("RenderAvatarMaxVisible")
-		("RenderUseImpostors")
-		("RenderTerrainLODFactor")
-		("RenderTreeLODFactor")
-		("RenderVolumeLODFactor")
-		("RenderFlexTimeFactor")
-		("RenderTransparentWater")
-		("RenderObjectBump")
-		("RenderLocalLights")
-		("VertexShaderEnable")
-		("RenderAvatarVP")
-		("RenderAvatarCloth")
-		("RenderReflectionDetail")
-		("WindLightUseAtmosShaders")
-		("WLSkyDetail")
-		("RenderDeferred")
-		("RenderDeferredSSAO")
-		("RenderDepthOfField")
-		("RenderShadowDetail")
-
-		("RenderAnisotropic")
-		("RenderFSAASamples")
-		("RenderGamma")
-		("RenderVBOEnable")
-		("RenderCompressTextures")
-		("TextureMemory")
-		("RenderFogRatio");
+	// preferences floaters or the settings for camera views.
+	// Additions or subtractions to the control variables in the floaters must also be reflected here.
+	if(PRESETS_GRAPHIC == subdirectory)
+	{
+		name_list = boost::assign::list_of
+			("RenderQualityPerformance")
+			("RenderFarClip")
+			("RenderMaxPartCount")
+			("RenderGlowResolutionPow")
+			("RenderTerrainDetail")
+			("RenderAvatarLODFactor")
+			("RenderAvatarMaxVisible")
+			("RenderUseImpostors")
+			("RenderTerrainLODFactor")
+			("RenderTreeLODFactor")
+			("RenderVolumeLODFactor")
+			("RenderFlexTimeFactor")
+			("RenderTransparentWater")
+			("RenderObjectBump")
+			("RenderLocalLights")
+			("VertexShaderEnable")
+			("RenderAvatarVP")
+			("RenderAvatarCloth")
+			("RenderReflectionDetail")
+			("WindLightUseAtmosShaders")
+			("WLSkyDetail")
+			("RenderDeferred")
+			("RenderDeferredSSAO")
+			("RenderDepthOfField")
+			("RenderShadowDetail")
+
+			("RenderAnisotropic")
+			("RenderFSAASamples")
+			("RenderGamma")
+			("RenderVBOEnable")
+			("RenderCompressTextures")
+			("TextureMemory")
+			("RenderFogRatio");
+		}
+
+	if(PRESETS_CAMERA == subdirectory)
+	{
+		name_list = boost::assign::list_of
+			("Placeholder");
+	}
 
 	// make an empty llsd
 	LLSD paramsData(LLSD::emptyMap());
@@ -166,7 +165,7 @@ void LLPresetsManager::savePreset(const std::string& name)
 		paramsData[ctrl_name]["Value"] = value;
 	}
 
-	std::string pathName(getUserDir(PRESETS_GRAPHIC) + "\\" + LLURI::escape(name) + ".xml");
+	std::string pathName(getPresetsDir(subdirectory) + "\\" + LLURI::escape(name) + ".xml");
 
 	// write to file
 	llofstream presetsXML(pathName);
@@ -178,17 +177,16 @@ void LLPresetsManager::savePreset(const std::string& name)
 	mPresetListChangeSignal();
 }
 
-void LLPresetsManager::setPresetNamesInComboBox(LLComboBox* combo)
+void LLPresetsManager::setPresetNamesInComboBox(const std::string& subdirectory, LLComboBox* combo)
 {
 	combo->clearRows();
 
-	std::string presets_dir = getGraphicPresetsDir();
+	std::string presets_dir = getPresetsDir(subdirectory);
 
 	if (!presets_dir.empty())
 	{
-		loadPresetNamesFromDir(presets_dir);
 		std::list<std::string> preset_names;
-		getPresetNames(preset_names);
+		loadPresetNamesFromDir(presets_dir, preset_names);
 
 		combo->setLabel(LLTrans::getString("preset_combo_label"));
 
@@ -206,9 +204,9 @@ void LLPresetsManager::setPresetNamesInComboBox(LLComboBox* combo)
 
 void LLPresetsManager::loadPreset(const std::string& name)
 {
-	std::string pathName(getUserDir(PRESETS_GRAPHIC) + "\\" + LLURI::escape(name) + ".xml");
+	std::string full_path(getPresetsDir(PRESETS_GRAPHIC) + "\\" + LLURI::escape(name) + ".xml");
 
-	gSavedSettings.loadFromFile(pathName, false, true);
+	gSavedSettings.loadFromFile(full_path, false, true);
 }
 
 bool LLPresetsManager::deletePreset(const std::string& name)
@@ -221,10 +219,10 @@ bool LLPresetsManager::deletePreset(const std::string& name)
 		return false;
 	}
 
-	// (*TODO Should the name be escaped here?
-	if (gDirUtilp->deleteFilesInDir(getUserDir(PRESETS_GRAPHIC), name + ".xml") < 1)
+	if (gDirUtilp->deleteFilesInDir(getPresetsDir(PRESETS_GRAPHIC), LLURI::escape(name) + ".xml") < 1)
 	{
 		LL_WARNS("Presets") << "Error removing preset " << name << " from disk" << LL_ENDL;
+		return false;
 	}
 	else
 	{
diff --git a/indra/newview/llpresetsmanager.h b/indra/newview/llpresetsmanager.h
index 128c5850f20ca7fb651c006dd98a8a64dd32f00d..3a2542bda0671161cc333612ce491a9692fec7a6 100644
--- a/indra/newview/llpresetsmanager.h
+++ b/indra/newview/llpresetsmanager.h
@@ -42,13 +42,11 @@ class LLPresetsManager : public LLSingleton<LLPresetsManager>
 	typedef std::list<std::string> preset_name_list_t;
 	typedef boost::signals2::signal<void()> preset_list_signal_t;
 
-	void setPresetNamesInComboBox(LLComboBox* combo);
-	void getPresetNames(preset_name_list_t& presets) const;
-	void loadPresetNamesFromDir(const std::string& dir);
-	void savePreset(const std::string & name);
+	static std::string getPresetsDir(const std::string& subdirectory);
+	void setPresetNamesInComboBox(const std::string& subdirectory, LLComboBox* combo);
+	void loadPresetNamesFromDir(const std::string& dir, preset_name_list_t& presets);
+	void savePreset(const std::string& subdirectory, const std::string & name);
 	void loadPreset(const std::string & name);
-	static std::string getCameraPresetsDir();
-	static std::string getGraphicPresetsDir();
 	bool deletePreset(const std::string& name);
 
 	/// Emitted when a preset gets loaded or deleted.
@@ -60,8 +58,6 @@ class LLPresetsManager : public LLSingleton<LLPresetsManager>
 	LLPresetsManager();
 	~LLPresetsManager();
 
-	static std::string getUserDir(const std::string& subdirectory);
-
 	preset_list_signal_t mPresetListChangeSignal;
 };