diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index c928cf0601bfa60e82285bfb9766269878ffe2bf..d58d03d68da2025232493edaa72c15ac3e9df88d 100644
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -880,7 +880,10 @@ void LLWearableHoldingPattern::onAllComplete()
 			 ++it)
 		{
 			LLViewerObject *objectp = *it;
-			gAgentAvatarp->addAttachmentOverridesForObject(objectp);
+            if (!objectp->isAnimatedObject())
+            {
+                gAgentAvatarp->addAttachmentOverridesForObject(objectp);
+            }
 		}
 		
 		// Add new attachments to match those requested.
diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp
index b6b7d5265b2b70c4fc63e8b414da1ea72b7c1073..3e8d8883e03a623e816e94b0c9fe7a5ce9963f23 100644
--- a/indra/newview/llselectmgr.cpp
+++ b/indra/newview/llselectmgr.cpp
@@ -6760,12 +6760,27 @@ void LLSelectMgr::pauseAssociatedAvatars()
         if (mSelectedObjects->mSelectType == SELECT_TYPE_ATTACHMENT && 
             isAgentAvatarValid() && object->getParent() != NULL)
         {
-            mPauseRequests.push_back(gAgentAvatarp->requestPause());
+            if (object->isAnimatedObject())
+            {
+                // Is an animated object attachment.
+                // Pause both the control avatar and the avatar it's attached to.
+                if (object->getControlAvatar())
+                {
+                    mPauseRequests.push_back(object->getControlAvatar()->requestPause());
+                }
+                mPauseRequests.push_back(gAgentAvatarp->requestPause());
+            }
+            else
+            {
+                // Is a regular attachment. Pause the avatar it's attached to.
+                mPauseRequests.push_back(gAgentAvatarp->requestPause());
+            }
         }
         else
         {
             if (object && object->isAnimatedObject() && object->getControlAvatar())
             {
+                // Is a non-attached animated object. Pause the control avatar.
                 mPauseRequests.push_back(object->getControlAvatar()->requestPause());
             }
         }
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index 04e28271828305f34278e44bbac773fd76ece658..15fc995ecf2393f35f76e56d09c06912c2aa4ed5 100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -5023,7 +5023,7 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
 			bool is_rigged = false;
 
             // AXON handle NPC case
-            if (rigged && pAvatarVO)
+            if (rigged && pAvatarVO && !vobj->isAnimatedObject())
             {
                 pAvatarVO->addAttachmentOverridesForObject(vobj);
 				if (!LLApp::isExiting() && pAvatarVO->isSelf() && debugLoggingEnabled("AvatarAttachments"))