diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp
index 9c4bf0a5c2a066f240d1ae36e155eb5a1cd7f80f..84754d9c4d44077e47fb5cce130fa5befc4ca7c6 100644
--- a/indra/llui/llfloater.cpp
+++ b/indra/llui/llfloater.cpp
@@ -885,7 +885,6 @@ bool LLFloater::applyRectControl()
 			mPositioning = LLFloaterEnums::POSITIONING_RELATIVE;
 			LLRect screen_rect = calcScreenRect();
 			mPosition = LLCoordGL(screen_rect.getCenterX(), screen_rect.getCenterY()).convert();
-			storeRectControl();
 		}
 
 		LLControlVariablePtr x_control = getControlGroup()->getControl(mPosXControl);
@@ -904,6 +903,13 @@ bool LLFloater::applyRectControl()
 		}
 	}
 
+	if (saved_rect)
+	{
+		// propagate any derived positioning data back to settings file
+		storeRectControl();
+	}
+
+
 	return saved_rect;
 }