diff --git a/indra/newview/llpanelface.cpp b/indra/newview/llpanelface.cpp
index f8199090dc28aba6e36d8533162ba824b1f7f3ed..810c18de40d1eb61f14482cca20d34b95c96f5e9 100644
--- a/indra/newview/llpanelface.cpp
+++ b/indra/newview/llpanelface.cpp
@@ -63,6 +63,8 @@
 #include "lltexturectrl.h"
 #include "lltextureentry.h"
 #include "lltooldraganddrop.h"
+#include "lltoolface.h"
+#include "lltoolmgr.h"
 #include "lltrans.h"
 #include "llui.h"
 #include "llviewercontrol.h"
@@ -332,7 +334,8 @@ LLPanelFace::LLPanelFace()
     mPasteNormal(TRUE),
     mPasteSpecular(TRUE),
     mPasteMapping(TRUE),
-    mPasteMedia(TRUE)
+    mPasteMedia(TRUE),
+    mPopulateAllTEs(TRUE)
 {
 	USE_TEXTURE = LLTrans::getString("use_texture");
 
@@ -2904,6 +2907,7 @@ void LLPanelFace::onCopyFaces()
     std::map<LLUUID, LLUUID> asset_item_map;
 
     S32 num_tes = llmin((S32)objectp->getNumTEs(), (S32)objectp->getNumFaces());
+    mPopulateAllTEs = (num_tes != 1) || (LLToolFace::getInstance() == LLToolMgr::getInstance()->getCurrentTool());
     for (S32 te = 0; te < num_tes; ++te)
     {
         if (node->isTESelected(te))
@@ -3048,7 +3052,7 @@ void LLPanelFace::onCopyFaces()
 void LLPanelFace::pasteFace(LLViewerObject* objectp, S32 te)
 {
     LLSD te_data;
-    if (mClipboard.size() == 1)
+    if ((mClipboard.size() == 1) && mPopulateAllTEs)
     {
         te_data = *(mClipboard.beginArray());
     }
diff --git a/indra/newview/llpanelface.h b/indra/newview/llpanelface.h
index 76673c6444f0eaf59a145281c4bf5004483134e0..770f10e2ee57b786c42e3701f4aba6d28e07ba4d 100644
--- a/indra/newview/llpanelface.h
+++ b/indra/newview/llpanelface.h
@@ -255,6 +255,8 @@ class LLPanelFace : public LLPanel
     BOOL            mPasteMapping;
     BOOL            mPasteMedia;
 
+    BOOL            mPopulateAllTEs;
+
 	// Update visibility of controls to match current UI mode
 	// (e.g. materials vs media editing)
 	//