diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index ccb16621396f069fd423692b096e0c26e0778855..701a0b5b131adb1ca9e0751fe78a6634b5fb793c 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -2847,9 +2847,17 @@ void LLVOAvatar::idleUpdateMisc(bool detailed_update)
                         }
                     }
 
-                    
-                    attached_object->mDrawable->makeActive();
-                    attached_object->mDrawable->updateXform(TRUE);
+                    // if selecting any attachments, update all of them as non-damped
+                    if (LLSelectMgr::getInstance()->getSelection()->getObjectCount() && LLSelectMgr::getInstance()->getSelection()->isAttachment())
+                    {
+                        gPipeline.updateMoveNormalAsync(attached_object->mDrawable);
+                    }
+                    else
+                    {
+                        // Note: SL-17415; While most objects follow joints,
+                        // some objects get position updates from server
+                        gPipeline.updateMoveDampedAsync(attached_object->mDrawable);
+                    }
 
                     // override_bbox calls movePartition() and getSpatialPartition(),
                     // so bridge might no longer be valid, get it again.