diff --git a/indra/newview/llfloatercamera.cpp b/indra/newview/llfloatercamera.cpp
index ecb6254f8a6e0817349c4ad493dde983bb914022..abf60a29b479bfd75c4b485d4342291a8da22ca0 100644
--- a/indra/newview/llfloatercamera.cpp
+++ b/indra/newview/llfloatercamera.cpp
@@ -354,6 +354,8 @@ void LLFloaterCamera::updateState()
 	childSetVisible(ZOOM, CAMERA_CTRL_MODE_AVATAR_VIEW != mCurrMode);
 	childSetVisible(PRESETS, CAMERA_CTRL_MODE_AVATAR_VIEW == mCurrMode);
 
+	updateCameraPresetButtons();
+
 	//hiding or showing the panel with controls by reshaping the floater
 	bool showControls = CAMERA_CTRL_MODE_FREE_CAMERA != mCurrMode;
 	if (showControls == childIsVisible(CONTROLS)) return;
@@ -384,6 +386,16 @@ void LLFloaterCamera::updateState()
 	}
 }
 
+void LLFloaterCamera::updateCameraPresetButtons()
+{
+	ECameraPreset preset = (ECameraPreset) gSavedSettings.getU32("CameraPreset");
+	
+	childSetValue("rear_view",		preset == CAMERA_PRESET_REAR_VIEW);
+	childSetValue("group_view",		preset == CAMERA_PRESET_GROUP_VIEW);
+	childSetValue("front_view",		preset == CAMERA_PRESET_FRONT_VIEW);
+	childSetValue("mouselook_view",	gAgent.cameraMouselook());
+}
+
 void LLFloaterCamera::onClickCameraPresets(const LLSD& param)
 {
 	std::string name = param.asString();
@@ -405,4 +417,7 @@ void LLFloaterCamera::onClickCameraPresets(const LLSD& param)
 		gAgent.changeCameraToMouselook();
 	}
 
+	LLFloaterCamera* camera_floater = LLFloaterCamera::findInstance();
+	if (camera_floater)
+		camera_floater->updateCameraPresetButtons();
 }
diff --git a/indra/newview/llfloatercamera.h b/indra/newview/llfloatercamera.h
index 45d5e9a845a8b9079d6aff94a79c4027df52f2f3..f908ad08be0f12b9da5cda5b79084a75a28b62be 100644
--- a/indra/newview/llfloatercamera.h
+++ b/indra/newview/llfloatercamera.h
@@ -103,6 +103,9 @@ class LLFloaterCamera
 	/* updates the state (UI) according to the current mode */
 	void updateState();
 
+	/* update camera preset buttons toggle state according to the currently selected preset */
+	void updateCameraPresetButtons();
+
 	void onClickBtn(ECameraControlMode mode);
 	void assignButton2Mode(ECameraControlMode mode, const std::string& button_name);
 	
diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp
index fb7e757c434ccbec2dd14f26ba1b11ae84484851..780393a9c0b51ea3f854a4bcebe612454eb75e0c 100644
--- a/indra/newview/llfloaterpreference.cpp
+++ b/indra/newview/llfloaterpreference.cpp
@@ -323,7 +323,8 @@ LLFloaterPreference::LLFloaterPreference(const LLSD& key)
 	mCommitCallbackRegistrar.add("Pref.QualityPerformance",     boost::bind(&LLFloaterPreference::onChangeQuality, this, _2));	
 	mCommitCallbackRegistrar.add("Pref.applyUIColor",			boost::bind(&LLFloaterPreference::applyUIColor, this ,_1, _2));
 	mCommitCallbackRegistrar.add("Pref.getUIColor",				boost::bind(&LLFloaterPreference::getUIColor, this ,_1, _2));
-	
+	mCommitCallbackRegistrar.add("Pref.MaturitySettings",		boost::bind(&LLFloaterPreference::onChangeMaturity, this));
+
 	sSkin = gSavedSettings.getString("SkinCurrent");
 	
 	gSavedSettings.getControl("AvatarNameTagMode")->getCommitSignal()->connect(boost::bind(&handleNameTagOptionChanged,  _2));
@@ -536,6 +537,9 @@ void LLFloaterPreference::onOpen(const LLSD& key)
 	{
 		childSetText("maturity_desired_textbox",  maturity_combo->getSelectedItemLabel());
 		childSetVisible("maturity_desired_combobox", false);
+
+		// Display selected maturity icons.
+		onChangeMaturity();
 	}
 	
 	// Enabled/disabled popups, might have been changed by user actions
@@ -1212,7 +1216,19 @@ void LLFloaterPreference::applyResolution()
 	refresh();
 }
 
+void LLFloaterPreference::onChangeMaturity()
+{
+	U8 sim_access = gSavedSettings.getU32("PreferredMaturity");
 
+	getChild<LLIconCtrl>("rating_icon_general")->setVisible(sim_access == SIM_ACCESS_PG
+															|| sim_access == SIM_ACCESS_MATURE
+															|| sim_access == SIM_ACCESS_ADULT);
+
+	getChild<LLIconCtrl>("rating_icon_moderate")->setVisible(sim_access == SIM_ACCESS_MATURE
+															|| sim_access == SIM_ACCESS_ADULT);
+
+	getChild<LLIconCtrl>("rating_icon_adult")->setVisible(sim_access == SIM_ACCESS_ADULT);
+}
 
 
 void LLFloaterPreference::applyUIColor(LLUICtrl* ctrl, const LLSD& param)
diff --git a/indra/newview/llfloaterpreference.h b/indra/newview/llfloaterpreference.h
index 93b39d72bc8f54ac175f524d55001616871bfabd..71aa5d31895656a1af64767126377a7552c912ca 100644
--- a/indra/newview/llfloaterpreference.h
+++ b/indra/newview/llfloaterpreference.h
@@ -134,8 +134,9 @@ class LLFloaterPreference : public LLFloater
 	void onCommitMediaEnabled();
 	void onCommitMusicEnabled();
 	void applyResolution();
+	void onChangeMaturity();
 	void applyUIColor(LLUICtrl* ctrl, const LLSD& param);
-	void getUIColor(LLUICtrl* ctrl, const LLSD& param);	
+	void getUIColor(LLUICtrl* ctrl, const LLSD& param);
 	
 	void buildPopupLists();
 	static void refreshSkin(void* data);
diff --git a/indra/newview/skins/default/xui/en/floater_camera.xml b/indra/newview/skins/default/xui/en/floater_camera.xml
index 1b8bbe42d29310951b2f43c4201203e1ce321676..f69c763f787b2b4583da7ed800d2608363e5c725 100644
--- a/indra/newview/skins/default/xui/en/floater_camera.xml
+++ b/indra/newview/skins/default/xui/en/floater_camera.xml
@@ -132,6 +132,7 @@
              height="40"
              image_selected="Cam_Preset_Back_On"
              image_unselected="Cam_Preset_Back_Off"
+             is_toggle="true"
              layout="topleft"
              left="0"
              name="rear_view"
@@ -146,6 +147,7 @@
              height="40"
              image_selected="Cam_Preset_Side_On"
              image_unselected="Cam_Preset_Side_Off"
+             is_toggle="true"
              layout="topleft"
              left_pad="5"
              name="group_view"
@@ -160,6 +162,7 @@
              height="40"
              image_selected="Cam_Preset_Front_On"
              image_unselected="Cam_Preset_Front_Off"
+             is_toggle="true"
              layout="topleft"
              left="0"
              name="front_view"
@@ -174,6 +177,7 @@
              height="40"
              image_selected="Cam_Preset_Eye_Off"
              image_unselected="Cam_Preset_Eye_Off"
+             is_toggle="true"
              layout="topleft"
              left_pad="5"
              name="mouselook_view"
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_general.xml b/indra/newview/skins/default/xui/en/panel_preferences_general.xml
index 099c789e4be82d41320a0da692612fccbd81985d..d11aebe943d409d06106fef755fbad6db109a1f4 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_general.xml
@@ -141,7 +141,34 @@
          label="General"
          name="Desired_PG"
          value="13" />
+        <combo_box.commit_callback
+		 function="Pref.MaturitySettings"/>
     </combo_box>
+    <icon
+     follows="left|top"
+     height="16"
+     image_name="Parcel_PG_Dark"
+     layout="topleft"
+     left_pad="5"
+     name="rating_icon_general"
+     top_delta="3"
+     width="18"/>
+    <icon
+     follows="left|top"
+     height="16"
+     image_name="Parcel_M_Dark"
+     layout="topleft"
+     left_pad="2"
+     name="rating_icon_moderate"
+     width="18"/>
+    <icon
+     follows="left|top"
+     height="16"
+     image_name="Parcel_R_Dark"
+     layout="topleft"
+     left_pad="2"
+     name="rating_icon_adult"
+     width="18"/>
     <text
      type="string"
      length="1"