diff --git a/indra/newview/bdfloaterposer.cpp b/indra/newview/bdfloaterposer.cpp
index 510036a67e0aa92680b598731176485013c54c77..de6c7a84ab2280fe7a6a31c66695195a4ac53d40 100644
--- a/indra/newview/bdfloaterposer.cpp
+++ b/indra/newview/bdfloaterposer.cpp
@@ -280,6 +280,9 @@ void BDFloaterPoser::onClickPoseSave()
 {
 	//BD - Values don't matter when not editing.
 	onPoseSave(2, 0.1f, false);
+
+	//BD - Flash the poses button to give the user a visual cue where it went.
+	getChild<LLButton>("extend")->setFlashing(true, true);
 }
 
 void BDFloaterPoser::onPoseSave(S32 type, F32 time, bool editing)
@@ -412,7 +415,7 @@ void BDFloaterPoser::onPoseSave(S32 type, F32 time, bool editing)
 					//     as well as all attachment bones and collision volumes.
 					if (joint->mHasPosition || it > JOINTS)
 					{
-						vec3 = joint->getTargetPosition();
+						vec3 = it > JOINTS ? joint->getPosition() : joint->getTargetPosition();
 						record[line]["position"] = vec3.getValue();
 					}
 
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index e0274672f6ad4a0f4caa4874ac0a6bf21b5da8b4..f9de23c5c36b4ea19262f6dcaf9ca60b9358e586 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -2141,11 +2141,11 @@ void LLVOAvatar::resetSkeleton(bool reset_animations)
     }
 
 	//BD - We need to clear posing here otherwise we'll crash.
-	LLMotion* pose_motion = gAgentAvatarp->findMotion(ANIM_BD_POSING_MOTION);
+	LLMotion* pose_motion = findMotion(ANIM_BD_POSING_MOTION);
 	if (pose_motion)
 	{
 		gAgent.clearPosing();
-		gAgentAvatarp->removeMotion(ANIM_BD_POSING_MOTION);
+		removeMotion(ANIM_BD_POSING_MOTION);
 	}
 
     // Save mPelvis state
@@ -9777,7 +9777,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 
     bool slam_params = false;
 	applyParsedAppearanceMessage(*contents, slam_params);
-	if (getOverallAppearance() != AOA_NORMAL)
+	if (getOverallAppearance() != AOA_NORMAL && !getPosing())
 	{
 		resetSkeleton(false);
 	}
@@ -11533,7 +11533,7 @@ void LLVOAvatar::setOverallAppearanceNormal()
 		return;
 
     LLVector3 pelvis_pos = getJoint("mPelvis")->getPosition();
-	resetSkeleton(false);
+	if (!getPosing()) resetSkeleton(false);
     getJoint("mPelvis")->setPosition(pelvis_pos);
 
 	for (auto it = mJellyAnims.begin(); it !=  mJellyAnims.end(); ++it)
@@ -11573,7 +11573,7 @@ void LLVOAvatar::setOverallAppearanceJellyDoll()
 	updateOverallAppearanceAnimations();
 	
     LLVector3 pelvis_pos = getJoint("mPelvis")->getPosition();
-	resetSkeleton(false);
+	if (!getPosing()) resetSkeleton(false);
     getJoint("mPelvis")->setPosition(pelvis_pos);
 
 }