diff --git a/indra/newview/llsidepanelinventory.cpp b/indra/newview/llsidepanelinventory.cpp
index ca7a3b663a7105b5fbe2e15b44c45d8638370b59..5383158cd3f4d14ccd3d1d468c043a3f15c76009 100644
--- a/indra/newview/llsidepanelinventory.cpp
+++ b/indra/newview/llsidepanelinventory.cpp
@@ -235,8 +235,10 @@ void LLSidepanelInventory::updateVerbs()
 	if (!item)
 		return;
 
-	mInfoBtn->setEnabled(TRUE);
-	mShareBtn->setEnabled(TRUE);
+	bool is_single_selection = getSelectedCount() == 1;
+
+	mInfoBtn->setEnabled(is_single_selection);
+	mShareBtn->setEnabled(is_single_selection);
 
 	switch(item->getInventoryType())
 	{
@@ -274,6 +276,14 @@ LLInventoryItem *LLSidepanelInventory::getSelectedItem()
 	return item;
 }
 
+U32 LLSidepanelInventory::getSelectedCount()
+{
+	LLPanelMainInventory *panel_main_inventory = mInventoryPanel->getChild<LLPanelMainInventory>("panel_main_inventory");
+	std::set<LLUUID> selection_list;
+	panel_main_inventory->getActivePanel()->getRootFolder()->getSelectionList(selection_list);
+	return selection_list.size();
+}
+
 LLInventoryPanel *LLSidepanelInventory::getActivePanel()
 {
 	if (!getVisible())
diff --git a/indra/newview/llsidepanelinventory.h b/indra/newview/llsidepanelinventory.h
index 231cdac9e1e923ad679b5980f8177f835d17aaa0..ee11fb6b5446e3ae0a09a5411a8971574d3c9489 100644
--- a/indra/newview/llsidepanelinventory.h
+++ b/indra/newview/llsidepanelinventory.h
@@ -56,6 +56,7 @@ class LLSidepanelInventory : public LLPanel
 protected:
 	// Tracks highlighted (selected) item in inventory panel.
 	LLInventoryItem *getSelectedItem();
+	U32 getSelectedCount();
 	void onSelectionChange(const std::deque<LLFolderViewItem*> &items, BOOL user_action);
 	// "wear", "teleport", etc.
 	void performActionOnSelection(const std::string &action);
diff --git a/indra/newview/llsidepanelinventorysubpanel.cpp b/indra/newview/llsidepanelinventorysubpanel.cpp
index 23931defdd2295e8df10e578c096dccb11547aec..793904faa8c4aad20390e66c400fb464e0038010 100644
--- a/indra/newview/llsidepanelinventorysubpanel.cpp
+++ b/indra/newview/llsidepanelinventorysubpanel.cpp
@@ -57,7 +57,6 @@ LLSidepanelInventorySubpanel::LLSidepanelInventorySubpanel()
   : LLPanel(),
 	mIsDirty(TRUE),
 	mIsEditing(FALSE),
-	mEditBtn(NULL),
 	mCancelBtn(NULL),
 	mSaveBtn(NULL)
 {
@@ -71,9 +70,6 @@ LLSidepanelInventorySubpanel::~LLSidepanelInventorySubpanel()
 // virtual
 BOOL LLSidepanelInventorySubpanel::postBuild()
 {
-	mEditBtn = getChild<LLButton>("edit_btn");
-	mEditBtn->setClickedCallback(boost::bind(&LLSidepanelInventorySubpanel::onEditButtonClicked, this));
-
 	mSaveBtn = getChild<LLButton>("save_btn");
 	mSaveBtn->setClickedCallback(boost::bind(&LLSidepanelInventorySubpanel::onSaveButtonClicked, this));
 
@@ -111,9 +107,9 @@ void LLSidepanelInventorySubpanel::draw()
 {
 	if (mIsDirty)
 	{
-		mIsDirty = FALSE;
 		refresh();
 		updateVerbs();
+		mIsDirty = FALSE;
 	}
 
 	LLPanel::draw();
@@ -127,7 +123,6 @@ void LLSidepanelInventorySubpanel::dirty()
 
 void LLSidepanelInventorySubpanel::updateVerbs()
 {
-	mEditBtn->setVisible(!mIsEditing);
 	mSaveBtn->setVisible(mIsEditing);
 	mCancelBtn->setVisible(mIsEditing);
 }
diff --git a/indra/newview/llsidepanelinventorysubpanel.h b/indra/newview/llsidepanelinventorysubpanel.h
index a74f4fdee61120100deba01f7c58c92606026b3c..b7bee6809f9e42e7596a4fa0c6ebb9148c55776d 100644
--- a/indra/newview/llsidepanelinventorysubpanel.h
+++ b/indra/newview/llsidepanelinventorysubpanel.h
@@ -70,7 +70,6 @@ class LLSidepanelInventorySubpanel : public LLPanel
 	void 						onEditButtonClicked();
 	void 						onSaveButtonClicked();
 	void 						onCancelButtonClicked();
-	LLButton*					mEditBtn;
 	LLButton*					mSaveBtn;
 	LLButton*					mCancelBtn;
 
diff --git a/indra/newview/llsidepaneliteminfo.cpp b/indra/newview/llsidepaneliteminfo.cpp
index ad6428e5153e33e05263c72851162c348c79fa2f..449bdefb8f8b0d3f9ff2309e4be254ab96d12df0 100644
--- a/indra/newview/llsidepaneliteminfo.cpp
+++ b/indra/newview/llsidepaneliteminfo.cpp
@@ -159,7 +159,6 @@ void LLSidepanelItemInfo::refresh()
 			setIsEditing(FALSE);
 			return;
 		}
-		mEditBtn->setEnabled(FALSE);
 	}
 
 	if (!getIsEditing())
@@ -251,6 +250,18 @@ void LLSidepanelItemInfo::refreshFromItem(LLInventoryItem* item)
 											   GP_OBJECT_MANIPULATE)
 		&& is_obj_modify && is_complete;
 
+	const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH);
+	bool item_in_trash = item->getUUID() == trash_id || gInventory.isObjectDescendentOf(item->getUUID(), trash_id);
+
+	if (is_modifiable && !item_in_trash)
+	{
+		setIsEditing(TRUE);
+	}
+	else
+	{
+		setIsEditing(FALSE);
+	}
+
 	childSetEnabled("LabelItemNameTitle",TRUE);
 	childSetEnabled("LabelItemName",is_modifiable && !is_calling_card); // for now, don't allow rename of calling cards
 	childSetText("LabelItemName",item->getName());
@@ -858,25 +869,6 @@ LLInventoryItem* LLSidepanelItemInfo::findItem() const
 	return item;
 }
 
-// virtual
-void LLSidepanelItemInfo::updateVerbs()
-{
-	LLSidepanelInventorySubpanel::updateVerbs();
-
-	const LLViewerInventoryItem* item = (LLViewerInventoryItem*)findItem();
-	if (item)
-	{
-		const LLPermissions& perm = item->getPermissions();
-		BOOL is_modifiable = gAgent.allowOperation(PERM_MODIFY, perm,
-												   GP_OBJECT_MANIPULATE);
-		
-		const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH);
-		bool item_in_trash = item->getUUID() == trash_id || gInventory.isObjectDescendentOf(item->getUUID(), trash_id);
-		mEditBtn->setEnabled(is_modifiable && !item_in_trash);
-		
-	}
-}
-
 // virtual
 void LLSidepanelItemInfo::save()
 {
diff --git a/indra/newview/llsidepaneliteminfo.h b/indra/newview/llsidepaneliteminfo.h
index 4bfbd56ea795096409c9bf13d3fd87dbc88f3c0b..21002327bcd4a444de43ee5532784c9deaec6395 100644
--- a/indra/newview/llsidepaneliteminfo.h
+++ b/indra/newview/llsidepaneliteminfo.h
@@ -62,7 +62,6 @@ class LLSidepanelItemInfo : public LLSidepanelInventorySubpanel
 protected:
 	/*virtual*/ void refresh();
 	/*virtual*/ void save();
-	/*virtual*/ void updateVerbs();
 
 	LLInventoryItem* findItem() const;
 	LLViewerObject*  findObject() const;
diff --git a/indra/newview/llsidepaneltaskinfo.cpp b/indra/newview/llsidepaneltaskinfo.cpp
index 464546cc77f8e67f425ec024ebbb8a05349ef023..2c40e948de7182e708740dc6dc3af2c14fdc130c 100644
--- a/indra/newview/llsidepaneltaskinfo.cpp
+++ b/indra/newview/llsidepaneltaskinfo.cpp
@@ -1047,8 +1047,8 @@ void LLSidepanelTaskInfo::updateVerbs()
 	mBuyBtn->setVisible(!getIsEditing());
 
 	mOpenBtn->setEnabled(enable_object_open());
-	const LLViewerObject *obj = getFirstSelectedObject();
-	mEditBtn->setEnabled(obj && obj->permModify());
+	//const LLViewerObject *obj = getFirstSelectedObject();
+	//mEditBtn->setEnabled(obj && obj->permModify());
 }
 
 void LLSidepanelTaskInfo::onOpenButtonClicked()
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 93b0ad4a5b06b18f23f5b55f28495fc502d628e3..03910b0534371e929b86dc3b8ea4880b923b4316 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -5994,7 +5994,7 @@ void LLVOAvatar::updateMeshTextures()
 			else
 			{
 				mBakedTextureDatas[i].mIsLoaded = FALSE;
-				if ( (i == BAKED_HEAD) || (i == BAKED_UPPER) || (i == BAKED_LOWER) )
+				if ( (baked_img->getID() != IMG_INVISIBLE) && ((i == BAKED_HEAD) || (i == BAKED_UPPER) || (i == BAKED_LOWER)) )
 				{
 					baked_img->setLoadedCallback(onBakedTextureMasksLoaded, MORPH_MASK_REQUESTED_DISCARD, TRUE, TRUE, new LLTextureMaskData( mID ));	
 				}
@@ -6464,7 +6464,7 @@ void LLVOAvatar::onFirstTEMessageReceived()
 				LLViewerFetchedTexture* image = LLViewerTextureManager::staticCastToFetchedTexture(getImage( mBakedTextureDatas[i].mTextureIndex, 0 ), TRUE) ;
 				mBakedTextureDatas[i].mLastTextureIndex = image->getID();
 				// If we have more than one texture for the other baked layers, we'll want to call this for them too.
-				if ( (i == BAKED_HEAD) || (i == BAKED_UPPER) || (i == BAKED_LOWER) )
+				if ( (image->getID() != IMG_INVISIBLE) && ((i == BAKED_HEAD) || (i == BAKED_UPPER) || (i == BAKED_LOWER)) )
 				{
 					image->setLoadedCallback( onBakedTextureMasksLoaded, MORPH_MASK_REQUESTED_DISCARD, TRUE, TRUE, new LLTextureMaskData( mID ));
 				}
diff --git a/indra/newview/skins/default/xui/en/sidepanel_item_info.xml b/indra/newview/skins/default/xui/en/sidepanel_item_info.xml
index db8a844eb0fbb672625c441ede7510646ced95ba..d006fd0700216bd48e359f9fc01e4ee2b0caa3c9 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_item_info.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_item_info.xml
@@ -488,15 +488,6 @@
 		 left="5"
 		 bottom="5"
 		 width="313">
-	    <button
-		     follows="bottom|left"
-		     height="25"
-		     label="Edit"
-		     layout="topleft"
-		     left="0"
-		     name="edit_btn"
-		     top="0"
-		     width="50" />
 	    <button
 		     follows="bottom|right"
 		     height="25"
diff --git a/indra/newview/skins/default/xui/en/sidepanel_task_info.xml b/indra/newview/skins/default/xui/en/sidepanel_task_info.xml
index 348f0dfc095edf6a4bb8eb823a3ccab16b8a0cfc..eff2ca1fcdeb516846c561c6b157507de783f9d9 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_task_info.xml
@@ -482,16 +482,7 @@
 		 left="5"
 		 bottom="5"
 		 width="313">
-	    <button
-		     follows="bottom|left"
-		     height="25"
-		     label="Edit"
-		     layout="topleft"
-		     left="0"
-		     name="edit_btn"
-		     top="0"
-		     width="50" />
-	    <button
+        <button
 		     follows="bottom|left"
 		     height="25"
 		     label="Open"