diff --git a/indra/newview/llpanelface.cpp b/indra/newview/llpanelface.cpp
index 2aba115e3f3ae1bb4253b4545b4594c9a98e8edd..3a48db0a1ae585a4ad52c82921bfd5ba832ff0e3 100644
--- a/indra/newview/llpanelface.cpp
+++ b/indra/newview/llpanelface.cpp
@@ -2916,6 +2916,9 @@ void LLPanelFace::onCopyFaces()
                 te_data["te"] = tep->asLLSD();
                 te_data["te"]["glow"] = tep->getGlow();
                 te_data["te"]["shiny"] = tep->getShiny();
+                te_data["te"]["bumpmap"] = tep->getBumpmap();
+                te_data["te"]["bumpshiny"] = tep->getBumpShiny();
+                te_data["te"]["bumpfullbright"] = tep->getBumpShinyFullbright();
 
                 if (te_data["te"].has("imageid"))
                 {
@@ -3156,6 +3159,19 @@ void LLPanelFace::pasteFace(LLViewerObject* objectp, S32 te)
                 objectp->setTEGlow(te, (F32)te_data["te"]["glow"].asReal());
             }
 
+            if (mPasteNormal && te_data["te"].has("bumpmap"))
+            {
+                objectp->setTEBumpmap(te, (U8)te_data["te"]["bumpmap"].asInteger());
+            }
+            if (mPasteSpecular && te_data["te"].has("bumpshiny"))
+            {
+                objectp->setTEBumpShiny(te, (U8)te_data["te"]["bumpshiny"].asInteger());
+            }
+            if (mPasteSpecular && te_data["te"].has("bumpfullbright"))
+            {
+                objectp->setTEBumpShinyFullbright(te, (U8)te_data["te"]["bumpfullbright"].asInteger());
+            }
+
             // Texture map
             if (mPasteMapping)
             {