diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index 01f97f5faa87bd8da78b05f5e6bfc665f8afa607..6c48b5ee73a293f1df94ec1dfbdbb65fa7596a06 100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -1235,13 +1235,11 @@ void LLVOVolume::notifyMeshLoaded()
     LLVOAvatar *av = getAvatar();
     if (av && !isAnimatedObject())
     {
-        av->addAttachmentOverridesForObject(this);
         av->notifyAttachmentMeshLoaded();
     }
     LLControlAvatar *cav = getControlAvatar();
     if (cav && isAnimatedObject())
     {
-        cav->addAttachmentOverridesForObject(this);
         cav->notifyAttachmentMeshLoaded();
     }
     updateVisualComplexity();
@@ -1252,7 +1250,22 @@ void LLVOVolume::notifySkinInfoLoaded(const LLMeshSkinInfo* skin)
     mSkinInfoUnavaliable = false;
 	mSkinInfo = skin;
 
-	notifyMeshLoaded();
+	mSculptChanged = TRUE;
+	gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_GEOMETRY);
+
+	LLVOAvatar* av = getAvatar();
+	if (av && !isAnimatedObject())
+	{
+		av->addAttachmentOverridesForObject(this);
+		av->notifyAttachmentMeshLoaded();
+	}
+	LLControlAvatar* cav = getControlAvatar();
+	if (cav && isAnimatedObject())
+	{
+		cav->addAttachmentOverridesForObject(this);
+		cav->notifyAttachmentMeshLoaded();
+	}
+	updateVisualComplexity();
 }
 
 void LLVOVolume::notifySkinInfoUnavailable()