diff --git a/indra/newview/llcontrolavatar.cpp b/indra/newview/llcontrolavatar.cpp
index 8c10ececb624112b2ad8e19ad62016e4ca483027..f828ed783e05f7881f431e1fce674ef20e02129a 100644
--- a/indra/newview/llcontrolavatar.cpp
+++ b/indra/newview/llcontrolavatar.cpp
@@ -141,7 +141,24 @@ void LLControlAvatar::matchVolumeTransform()
 	        const LLMeshSkinInfo* skin_info = mRootVolp->getSkinInfo();
 			if (skin_info)
 			{
+                LL_DEBUGS("BindShape") << getFullname() << " bind shape " << skin_info->mBindShapeMatrix << LL_ENDL;
 				LLMatrix3 bind_mat = skin_info->mBindShapeMatrix.getMat3();
+				for (auto i = 0; i < 3; i++)
+				{
+                    F32 len = 0.0f;
+					for (auto j = 0; j < 3; j++)
+					{
+                        len += bind_mat.mMatrix[i][j] * bind_mat.mMatrix[i][j];
+                    }
+                    if (len >= 0.0f)
+                    {
+                        len = sqrt(len);
+                        for (auto j = 0; j < 3; j++)
+                        {
+                            bind_mat.mMatrix[i][j] /= len;
+                        }
+                    }
+				}
                 bind_mat.invert();
                 bind_rot = bind_mat.quaternion();
                 bind_rot.normalize();