diff --git a/indra/newview/llpanelnearbymedia.cpp b/indra/newview/llpanelnearbymedia.cpp
index 4f2d6374cadcb305934886a81ba45086ad99a95f..93ebae334fae399ccf42012ce2e99c43df7dec42 100644
--- a/indra/newview/llpanelnearbymedia.cpp
+++ b/indra/newview/llpanelnearbymedia.cpp
@@ -74,6 +74,7 @@ static const LLUUID PARCEL_AUDIO_LIST_ITEM_UUID = LLUUID("DF4B020D-8A24-4B95-AB5
 // LLPanelNearByMedia
 //
 
+
 LLPanelNearByMedia::LLPanelNearByMedia()
 :	mMediaList(NULL),
 	  mEnableAllCtrl(NULL),
@@ -87,6 +88,8 @@ LLPanelNearByMedia::LLPanelNearByMedia()
 	mParcelAudioAutoStart = gSavedSettings.getBOOL(LLViewerMedia::AUTO_PLAY_MEDIA_SETTING) &&
 							gSavedSettings.getBOOL("MediaTentativeAutoPlay");
 
+	gSavedSettings.getControl(LLViewerMedia::AUTO_PLAY_MEDIA_SETTING)->getSignal()->connect(boost::bind(&LLPanelNearByMedia::handleMediaAutoPlayChanged, this, _2));
+
 	mCommitCallbackRegistrar.add("MediaListCtrl.EnableAll",		boost::bind(&LLPanelNearByMedia::onClickEnableAll, this));
 	mCommitCallbackRegistrar.add("MediaListCtrl.DisableAll",		boost::bind(&LLPanelNearByMedia::onClickDisableAll, this));
 	mCommitCallbackRegistrar.add("MediaListCtrl.GoMediaPrefs", boost::bind(&LLPanelNearByMedia::onAdvancedButtonClick, this));
@@ -168,12 +171,19 @@ BOOL LLPanelNearByMedia::postBuild()
 	mLessRect = getRect();
 	mLessRect.mBottom = minimized_controls->getRect().mBottom;
 
-	getChild<LLUICtrl>("more_less_btn")->setValue(false);
+	getChild<LLUICtrl>("more_btn")->setVisible(false);
 	onMoreLess();
 	
 	return TRUE;
 }
 
+void LLPanelNearByMedia::handleMediaAutoPlayChanged(const LLSD& newvalue)
+{
+	// update mParcelAudioAutoStart if AUTO_PLAY_MEDIA_SETTING changes
+	mParcelAudioAutoStart = gSavedSettings.getBOOL(LLViewerMedia::AUTO_PLAY_MEDIA_SETTING) &&
+							gSavedSettings.getBOOL("MediaTentativeAutoPlay");							
+}
+
 /*virtual*/
 void LLPanelNearByMedia::onMouseEnter(S32 x, S32 y, MASK mask)
 {
@@ -954,7 +964,7 @@ void LLPanelNearByMedia::onAdvancedButtonClick()
 
 void LLPanelNearByMedia::onMoreLess()
 {
-	bool is_more = getChild<LLUICtrl>("more_less_btn")->getValue();
+	bool is_more = getChild<LLUICtrl>("more_btn")->getVisible();
 	mNearbyMediaPanel->setVisible(is_more);
 
 	// enable resizing when expanded
@@ -964,6 +974,9 @@ void LLPanelNearByMedia::onMoreLess()
 	new_rect.translate(getRect().mRight - new_rect.mRight, getRect().mTop - new_rect.mTop);
 
 	setShape(new_rect);
+
+	getChild<LLUICtrl>("more_btn")->setVisible(!is_more);
+	getChild<LLUICtrl>("less_btn")->setVisible(is_more);
 }
 
 void LLPanelNearByMedia::updateControls()
diff --git a/indra/newview/llpanelnearbymedia.h b/indra/newview/llpanelnearbymedia.h
index af4659365f29828a9e6ed80ef1a62a83c262f2df..7c07867df3024f5d94d383c0ec27a8d037ed77a8 100644
--- a/indra/newview/llpanelnearbymedia.h
+++ b/indra/newview/llpanelnearbymedia.h
@@ -63,6 +63,10 @@ class LLPanelNearByMedia : public LLPanel
 	// interaction with our buttons.
 	bool getParcelAudioAutoStart();
 
+	// callback for when the auto play media preference changes
+	// to update mParcelAudioAutoStart
+	void handleMediaAutoPlayChanged(const LLSD& newvalue);
+
 	LLPanelNearByMedia();
 	virtual ~LLPanelNearByMedia();
 
diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp
index 84c463495bddf31d557a36e97ca627502099d00f..a9bbee784da84a473d0c6f0f54d0f935822f03d3 100644
--- a/indra/newview/lltoolpie.cpp
+++ b/indra/newview/lltoolpie.cpp
@@ -181,10 +181,10 @@ BOOL LLToolPie::pickLeftMouseDownCallback()
 		parent = object->getRootEdit();
 	}
 
-
-	BOOL touchable = (object && object->flagHandleTouch()) 
-					 || (parent && parent->flagHandleTouch());
-
+	if (handleMediaClick(mPick))
+	{
+		return TRUE;
+	}
 
 	// If it's a left-click, and we have a special action, do it.
 	if (useClickAction(mask, object, parent))
@@ -286,14 +286,12 @@ BOOL LLToolPie::pickLeftMouseDownCallback()
 		}
 	}
 
-	if (handleMediaClick(mPick))
-	{
-		return TRUE;
-	}
-
 	// put focus back "in world"
 	gFocusMgr.setKeyboardFocus(NULL);
 
+	BOOL touchable = (object && object->flagHandleTouch()) 
+					 || (parent && parent->flagHandleTouch());
+
 	// Switch to grab tool if physical or triggerable
 	if (object && 
 		!object->isAvatar() && 
@@ -513,21 +511,22 @@ BOOL LLToolPie::handleHover(S32 x, S32 y, MASK mask)
 	}
 
 	LLViewerObject* click_action_object = click_action_pick.getObject();
-	if (click_action_object && useClickAction(mask, click_action_object, click_action_object->getRootEdit()))
+	if (handleMediaHover(mHoverPick))
 	{
+		// *NOTE: If you think the hover glow conflicts with the media outline, you
+		// could disable it here.
 		show_highlight = true;
-		ECursorType cursor = cursor_from_object(click_action_object);
-		gViewerWindow->setCursor(cursor);
+		// cursor set by media object
 		lldebugst(LLERR_USER_INPUT) << "hover handled by LLToolPie (inactive)" << llendl;
 	}
-	else if (handleMediaHover(mHoverPick))
+	else if (click_action_object && useClickAction(mask, click_action_object, click_action_object->getRootEdit()))
 	{
-		// *NOTE: If you think the hover glow conflicts with the media outline, you
-		// could disable it here.
 		show_highlight = true;
-		// cursor set by media object
+		ECursorType cursor = cursor_from_object(click_action_object);
+		gViewerWindow->setCursor(cursor);
 		lldebugst(LLERR_USER_INPUT) << "hover handled by LLToolPie (inactive)" << llendl;
 	}
+	
 	else if ((object && !object->isAvatar() && object->usePhysics()) 
 			 || (parent && !parent->isAvatar() && parent->usePhysics()))
 	{
diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp
index af0dcd8e355ccfc97a7ca2a2c4ef899d91efc881..a5adb11c537fac59c94fd43766807c0a9d3768af 100644
--- a/indra/newview/llviewertexture.cpp
+++ b/indra/newview/llviewertexture.cpp
@@ -1426,15 +1426,15 @@ BOOL LLViewerFetchedTexture::createTexture(S32 usename/*= 0*/)
 //virtual
 void LLViewerFetchedTexture::setKnownDrawSize(S32 width, S32 height)
 {
-	if(mKnownDrawWidth != width || mKnownDrawHeight != height)
+	if(mKnownDrawWidth < width || mKnownDrawHeight < height)
 	{
-		mKnownDrawWidth = width;
-		mKnownDrawHeight = height;
+		mKnownDrawWidth = llmax(mKnownDrawWidth, width) ;
+		mKnownDrawHeight = llmax(mKnownDrawHeight, height) ;
 
 		mKnownDrawSizeChanged = TRUE ;
 		mFullyLoaded = FALSE ;
 	}
-	addTextureStats((F32)(width * height));
+	addTextureStats((F32)(mKnownDrawWidth * mKnownDrawHeight));
 }
 
 //virtual
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 81033485eed267398f6ec25c6f0cb09c320fe3fd..a96a6bf1b3e8895416c49938b3b2927ddd5d02af 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -857,7 +857,11 @@ LLWindowCallbacks::DragNDropResult LLViewerWindow::handleDragNDrop( LLWindow *wi
 					if (obj && !obj->getRegion()->getCapability("ObjectMedia").empty())
 					{
 						LLTextureEntry *te = obj->getTE(object_face);
-						if (te)
+
+						// can modify URL if we can modify the object or we have navigate permissions
+						bool allow_modify_url = obj->permModify() || obj->hasMediaPermission( te->getMediaData(), LLVOVolume::MEDIA_PERM_INTERACT );
+
+						if (te && allow_modify_url )
 						{
 							if (drop)
 							{
@@ -888,29 +892,24 @@ LLWindowCallbacks::DragNDropResult LLViewerWindow::handleDragNDrop( LLWindow *wi
 									// URL passes the whitelist
 									if (te->getMediaData()->checkCandidateUrl( url ) )
 									{
-										// we are allowed to modify the object or we have navigate permissions
-										// NOTE: Design states you you can change the URL if you have media 
-										//       navigate permissions even if you do not have prim modify rights
-										if ( obj->permModify() || obj->hasMediaPermission( te->getMediaData(), LLVOVolume::MEDIA_PERM_INTERACT ) )
+										// just navigate to the URL
+										if (obj->getMediaImpl(object_face))
 										{
-											// just navigate to the URL
-											if (obj->getMediaImpl(object_face))
-											{
-												obj->getMediaImpl(object_face)->navigateTo(url);
-											}
-											else 
-											{
-												// This is very strange.  Navigation should
-												// happen via the Impl, but we don't have one.
-												// This sends it to the server, which /should/
-												// trigger us getting it.  Hopefully.
-												LLSD media_data;
-												media_data[LLMediaEntry::CURRENT_URL_KEY] = url;
-												obj->syncMediaData(object_face, media_data, true, true);
-												obj->sendMediaDataUpdate();
-											}
-											result = LLWindowCallbacks::DND_LINK;
+											obj->getMediaImpl(object_face)->navigateTo(url);
 										}
+										else 
+										{
+											// This is very strange.  Navigation should
+											// happen via the Impl, but we don't have one.
+											// This sends it to the server, which /should/
+											// trigger us getting it.  Hopefully.
+											LLSD media_data;
+											media_data[LLMediaEntry::CURRENT_URL_KEY] = url;
+											obj->syncMediaData(object_face, media_data, true, true);
+											obj->sendMediaDataUpdate();
+										}
+										result = LLWindowCallbacks::DND_LINK;
+										
 									}
 								}
 								LLSelectMgr::getInstance()->unhighlightObjectOnly(mDragHoveredObject);
@@ -930,6 +929,7 @@ LLWindowCallbacks::DragNDropResult LLViewerWindow::handleDragNDrop( LLWindow *wi
 										LLSelectMgr::getInstance()->highlightObjectOnly(mDragHoveredObject);
 									}
 									result = (! te->hasMedia()) ? LLWindowCallbacks::DND_COPY : LLWindowCallbacks::DND_LINK;
+
 								}
 							}
 						}
diff --git a/indra/newview/skins/default/xui/en/inspector_info_ctrl.xml b/indra/newview/skins/default/xui/en/inspector_info_ctrl.xml
index 39fb54d513441c641dedc545907567d191eeadaa..a7ecc39ed85d84d77c43e6835960afdaf96e6a65 100644
--- a/indra/newview/skins/default/xui/en/inspector_info_ctrl.xml
+++ b/indra/newview/skins/default/xui/en/inspector_info_ctrl.xml
@@ -1,8 +1,8 @@
 <button
  chrome="true"
- image_selected="Info_Small"
- image_unselected="Info_Small"
- image_pressed="Info_Small"
+ image_selected="Info_Over"
+ image_unselected="Info_Over"
+ image_pressed="Info_Over"
  height="12"
  name="inspector_info_ctrl"
  width="12" />
diff --git a/indra/newview/skins/default/xui/en/menu_login.xml b/indra/newview/skins/default/xui/en/menu_login.xml
index 4655fa8c4607895eac9b066c8cfe0945bd76089e..e95300a4b356cad70c0fa17f86241c37e948727c 100644
--- a/indra/newview/skins/default/xui/en/menu_login.xml
+++ b/indra/newview/skins/default/xui/en/menu_login.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <menu_bar
- follows="left|top|right"
+ follows="left|top"
  height="18"
  layout="topleft"
  left_delta="0"
diff --git a/indra/newview/skins/default/xui/en/panel_nearby_media.xml b/indra/newview/skins/default/xui/en/panel_nearby_media.xml
index 53dda1927a7c649271b29fa181beed2ca18a62a3..ff2aae645ba2e52e67059c4ab4242ee74b78366c 100644
--- a/indra/newview/skins/default/xui/en/panel_nearby_media.xml
+++ b/indra/newview/skins/default/xui/en/panel_nearby_media.xml
@@ -64,19 +64,31 @@
 		  function="MediaListCtrl.GoMediaPrefs" />
 	</button>
 	<button
-		name="more_less_btn"
+		name="more_btn"
 		follows="right"
 		tool_tip="Advanced Controls"
 		top_delta="0"
 		right="-8"
 		width="66"
 		height="22"
-		toggle="true"
 		label="More &gt;&gt;"
 		label_selected="Less &lt;&lt;">
 	  <button.commit_callback
 		  function="MediaListCtrl.MoreLess" />
 	</button>
+  <button
+		name="less_btn"
+		follows="right"
+		tool_tip="Advanced Controls"
+		top_delta="0"
+		right="-8"
+		width="66"
+		height="22"
+		label="More &gt;&gt;"
+		label_selected="Less &lt;&lt;">
+      <button.commit_callback
+        function="MediaListCtrl.MoreLess" />
+  </button>
   </panel>
   <panel
 	  name="nearby_media_panel"