diff --git a/.hgtags b/.hgtags
index de9177630696c02d2fa2f1f544226e771ef8a7ac..c5b40e9b9a27755d8ab760c631b0a6523ac19585 100755
--- a/.hgtags
+++ b/.hgtags
@@ -305,6 +305,9 @@ b1dbb1a83f48f93f6f878cff9e52d2cb635e145c 3.4.0-beta2
 7649a3dff5ec22d3727377e5f02efd0f421e4cb5 DRTVWR-201
 84fb70dfe3444e75a44fb4bee43e2fc8221cebdd 3.4.0-beta4
 de3be913f68813a9bac7d1c671fef96d1159bcd6 DRTVWR-202
+573e863be2f26d3687161def4b9fea9b7038dda8 3.4.0-beta5
 34dbbe2b00afe90352d3acf8290eb10ab90d1c8b oz-build-test-tag
 6ee71714935ffcd159db3d4f5800c1929aac54e1 DRTVWR-205
 7b22c612fc756e0ea63b10b163e81d107f85dbf8 DRTVWR-206
+8c9085066c78ed5f6c9379dc054c82a6fcdb1851 DRTVWR-207
+351eea5f9dc192fc5ddea3b02958de97677a0a12 3.3.4-release3
diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp
index b2e6dc4571ff59bb975d13b155f524b051d0eca0..444bbb27769e6933d473c8676729d7b48411599e 100644
--- a/indra/newview/llviewerobject.cpp
+++ b/indra/newview/llviewerobject.cpp
@@ -4080,7 +4080,7 @@ S32 LLViewerObject::setTETextureCore(const U8 te, const LLUUID& uuid, LLHost hos
 	return retval;
 }
 
-
+//virtual
 void LLViewerObject::changeTEImage(S32 index, LLViewerTexture* new_image) 
 {
 	if(index < 0 || index >= getNumTEs())
diff --git a/indra/newview/llviewerobject.h b/indra/newview/llviewerobject.h
index 22e0de681e8e4ba1fbf0866dc77679719f6b06bb..277bd1c430bf04a30cabe9b75505ba2345fd75e8 100644
--- a/indra/newview/llviewerobject.h
+++ b/indra/newview/llviewerobject.h
@@ -322,7 +322,7 @@ class LLViewerObject : public LLPrimitive, public LLRefCount, public LLGLUpdate
 	/*virtual*/ S32     setTEGlow(const U8 te, const F32 glow);
 	/*virtual*/	BOOL	setMaterial(const U8 material);
 	virtual		void	setTEImage(const U8 te, LLViewerTexture *imagep); // Not derived from LLPrimitive
-	void                changeTEImage(S32 index, LLViewerTexture* new_image)  ;
+	virtual     void    changeTEImage(S32 index, LLViewerTexture* new_image)  ;
 	LLViewerTexture		*getTEImage(const U8 te) const;
 	
 	void fitFaceTexture(const U8 face);
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index 9c36cfee5995ec8e047095ac38b4c17a9c0247df..e99898a83c4a3dab4b62d0b7f7f5be785ac2c04a 100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -1803,6 +1803,18 @@ void LLVOVolume::setNumTEs(const U8 num_tes)
 	return ;
 }
 
+//virtual     
+void LLVOVolume::changeTEImage(S32 index, LLViewerTexture* imagep)
+{
+	BOOL changed = (mTEImages[index] != imagep);
+	LLViewerObject::changeTEImage(index, imagep);
+	if (changed)
+	{
+		gPipeline.markTextured(mDrawable);
+		mFaceMappingChanged = TRUE;
+	}
+}
+
 void LLVOVolume::setTEImage(const U8 te, LLViewerTexture *imagep)
 {
 	BOOL changed = (mTEImages[te] != imagep);
diff --git a/indra/newview/llvovolume.h b/indra/newview/llvovolume.h
index 0082f2e9914d22c1fcce046c904491a60adda210..5482c80f2b1ad146a72019f1e00ec64649330e52 100644
--- a/indra/newview/llvovolume.h
+++ b/indra/newview/llvovolume.h
@@ -173,6 +173,7 @@ class LLVOVolume : public LLViewerObject
 
 	/*virtual*/ void	setScale(const LLVector3 &scale, BOOL damped);
 
+	/*virtual*/ void    changeTEImage(S32 index, LLViewerTexture* new_image)  ;
 	/*virtual*/ void	setNumTEs(const U8 num_tes);
 	/*virtual*/ void	setTEImage(const U8 te, LLViewerTexture *imagep);
 	/*virtual*/ S32		setTETexture(const U8 te, const LLUUID &uuid);