diff --git a/indra/newview/llpanelface.cpp b/indra/newview/llpanelface.cpp
index 5c4c2693f8eb7c3d48f621e5f5e482979eba58dc..ca161a86545543bf364dc59cb199eff4206065ce 100644
--- a/indra/newview/llpanelface.cpp
+++ b/indra/newview/llpanelface.cpp
@@ -1368,10 +1368,10 @@ void LLPanelFace::updateMaterial()
 			mMaterial.reset();
 			mMaterialID = LLMaterialID::null;
 			// Delete existing material entry...
-
+			LLSelectMgr::getInstance()->selectionRemoveMaterial();
 			// Hold off any further updates till this one's
 			// acknowledged.
-			//mUpdateInFlight = true;
+			mUpdateInFlight = true;
 		}
 	}
 
diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp
index 91d737ee95b86f01b0e605f628a2f5947b2e265c..4623d32cff0a3f6c4a0283a7db69d7b37eb6dd77 100644
--- a/indra/newview/llselectmgr.cpp
+++ b/indra/newview/llselectmgr.cpp
@@ -2017,7 +2017,7 @@ void LLSelectMgr::selectionSetMaterial(LLMaterialPtr material)
 		{
 			if (object->permModify())
 			{
-			        llinfos << "Putting material on object " << object->getID() << " face " << face << ", material: " << mMaterial->asLLSD() << llendl;
+			        LL_INFOS("Materials") << "Putting material on object " << object->getID() << " face " << face << ", material: " << mMaterial->asLLSD() << LL_ENDL;
 				LLMaterialMgr::getInstance()->put(object->getID(),face,*mMaterial);
 				object->setTEMaterialParams(face,mMaterial);
 			}
@@ -2040,6 +2040,37 @@ void LLSelectMgr::selectionSetMaterial(LLMaterialPtr material)
 	mSelectedObjects->applyToObjects( &func2 );
 }
 
+void LLSelectMgr::selectionRemoveMaterial()
+{
+	struct f1 : public LLSelectedTEFunctor
+	{
+		bool apply(LLViewerObject* object, S32 face)
+		{
+			if (object->permModify())
+			{
+			        LL_INFOS("Materials") << "Removing material from object " << object->getID() << " face " << face << LL_ENDL;
+				LLMaterialMgr::getInstance()->remove(object->getID(),face);
+				object->setTEMaterialID(face,LLMaterialID::null);
+			}
+			return true;
+		}
+	} func1;
+	mSelectedObjects->applyToTEs( &func1 );
+
+	struct f2 : public LLSelectedObjectFunctor
+	{
+		virtual bool apply(LLViewerObject* object)
+		{
+			if (object->permModify())
+			{
+				object->sendTEUpdate();
+			}
+			return true;
+		}
+	} func2;
+	mSelectedObjects->applyToObjects( &func2 );
+}
+
 
 //-----------------------------------------------------------------------------
 // findObjectPermissions()
diff --git a/indra/newview/llselectmgr.h b/indra/newview/llselectmgr.h
index 65f3ea96e39a8d433c5ccc439c0d36c9a25aaafd..9d187f6272f927869af62776b9bab044cc999fdf 100644
--- a/indra/newview/llselectmgr.h
+++ b/indra/newview/llselectmgr.h
@@ -543,6 +543,7 @@ class LLSelectMgr : public LLEditMenuHandler, public LLSingleton<LLSelectMgr>
 	void selectionSetIncludeInSearch(bool include_in_search);
 	void selectionSetGlow(const F32 glow);
 	void selectionSetMaterial(LLMaterialPtr material);
+	void selectionRemoveMaterial();
 
 	void selectionSetObjectPermissions(U8 perm_field, BOOL set, U32 perm_mask, BOOL override = FALSE);
 	void selectionSetObjectName(const std::string& name);