diff --git a/indra/newview/llpanelface.cpp b/indra/newview/llpanelface.cpp
index 7b3bbf8b3b2985c3ffe8373b58cfad81e97fc870..7e9fe212ddf6564ab96caa5a43cedeb2c1fd0de2 100644
--- a/indra/newview/llpanelface.cpp
+++ b/indra/newview/llpanelface.cpp
@@ -1352,7 +1352,7 @@ void LLPanelFace::updateMaterial()
 		mMaterial->setDiffuseAlphaMode(getChild<LLComboBox>("combobox alphamode")->getCurrentIndex());
 		mMaterial->setAlphaMaskCutoff((U8)(getChild<LLUICtrl>("maskcutoff")->getValue().asInteger()));
 		llinfos << "Updating material: " << mMaterial->asLLSD() << llendl;
-		LLSelectMgr::getInstance()->selectionSetMaterial( *mMaterial );
+		LLSelectMgr::getInstance()->selectionSetMaterial( mMaterial );
 
 		// We've sent an update. Need to hold off on any more until
 		// the sim acknowledges this one.
diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp
index c93cecdd5d25a546ef3be006f4ee2308b2b7b2b6..9f343f465c7183e6e31ea16ef80b41262fa965f7 100644
--- a/indra/newview/llselectmgr.cpp
+++ b/indra/newview/llselectmgr.cpp
@@ -2010,18 +2010,19 @@ void LLSelectMgr::selectionSetGlow(F32 glow)
 	mSelectedObjects->applyToObjects( &func2 );
 }
 
-void LLSelectMgr::selectionSetMaterial(LLMaterial& material)
+void LLSelectMgr::selectionSetMaterial(LLMaterialPtr material)
 {
 	struct f1 : public LLSelectedTEFunctor
 	{
-		LLMaterial mMaterial;
-		f1(LLMaterial material) : mMaterial(material) {};
+		LLMaterialPtr mMaterial;
+		f1(LLMaterialPtr material) : mMaterial(material) {};
 		bool apply(LLViewerObject* object, S32 face)
 		{
 			if (object->permModify())
 			{
-			        llinfos << "Putting material on object " << object->getID() << " face " << face << ", material: " << mMaterial.asLLSD() << llendl;
-				LLMaterialMgr::getInstance()->put(object->getID(),face,mMaterial);
+			        llinfos << "Putting material on object " << object->getID() << " face " << face << ", material: " << mMaterial->asLLSD() << llendl;
+				LLMaterialMgr::getInstance()->put(object->getID(),face,*mMaterial);
+				object->setTEMaterialParams(face,mMaterial);
 			}
 			return true;
 		}
diff --git a/indra/newview/llselectmgr.h b/indra/newview/llselectmgr.h
index f1da18dcc360ce1b7686868cfabc5ea6c8b91e93..2eae5b94c9a70fffa4751f023fad849faa918f83 100644
--- a/indra/newview/llselectmgr.h
+++ b/indra/newview/llselectmgr.h
@@ -48,6 +48,7 @@
 #include <deque>
 #include <boost/iterator/filter_iterator.hpp>
 #include <boost/signals2.hpp>
+#include <boost/make_shared.hpp>	// boost::make_shared
 
 class LLMessageSystem;
 class LLViewerTexture;
@@ -538,7 +539,7 @@ class LLSelectMgr : public LLEditMenuHandler, public LLSingleton<LLSelectMgr>
 	void selectionSetClickAction(U8 action);
 	void selectionSetIncludeInSearch(bool include_in_search);
 	void selectionSetGlow(const F32 glow);
-	void selectionSetMaterial(LLMaterial& material);
+	void selectionSetMaterial(LLMaterialPtr material);
 
 	void selectionSetObjectPermissions(U8 perm_field, BOOL set, U32 perm_mask, BOOL override = FALSE);
 	void selectionSetObjectName(const std::string& name);