diff --git a/indra/llwindow/llwindowsdl.cpp b/indra/llwindow/llwindowsdl.cpp
index aed035569d98ab4604bb8ecc55926d2085400d88..6d593c807e63d27583d7656a44db513b0fdc22f0 100644
--- a/indra/llwindow/llwindowsdl.cpp
+++ b/indra/llwindow/llwindowsdl.cpp
@@ -1034,9 +1034,9 @@ void LLWindowSDL::setMouseClipping( BOOL b )
 }
 
 // virtual
-void LLWindowSDL::setMinSize(U32 min_width, U32 min_height)
+void LLWindowSDL::setMinSize(U32 min_width, U32 min_height, bool enforce_immediately)
 {
-	LLWindow::setMinSize(min_width, min_height);
+	LLWindow::setMinSize(min_width, min_height, enforce_immediately);
 
 #if LL_X11
 	// Set the minimum size limits for X11 window
diff --git a/indra/llwindow/llwindowsdl.h b/indra/llwindow/llwindowsdl.h
index 76019999b113db36f12e0ee244a9623c8ec44b1f..14bc0b399d7ff8382f7d37a1740de1dc7da9e9bd 100644
--- a/indra/llwindow/llwindowsdl.h
+++ b/indra/llwindow/llwindowsdl.h
@@ -76,7 +76,7 @@ public:
 	/*virtual*/ void captureMouse();
 	/*virtual*/ void releaseMouse();
 	/*virtual*/ void setMouseClipping( BOOL b );
-	/*virtual*/	void setMinSize(U32 min_width, U32 min_height);
+	/*virtual*/	void setMinSize(U32 min_width, U32 min_height, bool enforce_immediately = true);
 
 	/*virtual*/ BOOL isClipboardTextAvailable();
 	/*virtual*/ BOOL pasteTextFromClipboard(LLWString &dst);
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index eb72a8657f035cc21ac1c235656b51a2e3a27e15..31dfa1923c282e6a6504a85e2fdac2d02fa07b3c 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -2140,7 +2140,6 @@ void LLViewerWindow::reshape(S32 width, S32 height)
 		sendShapeToSim();
 
 		// store new settings for the mode we are in, regardless
-		// Only save size if not maximized
 		BOOL maximized = mWindow->getMaximized();
 		gSavedSettings.setBOOL("WindowMaximized", maximized);
 
@@ -2150,6 +2149,10 @@ void LLViewerWindow::reshape(S32 width, S32 height)
 			U32 min_window_height=gSavedSettings.getU32("MinWindowHeight");
 			// tell the OS specific window code about min window size
 			mWindow->setMinSize(min_window_width, min_window_height);
+
+			// Only save size if not maximized
+			gSavedSettings.setU32("WindowWidth", mWindowRectRaw.getWidth());
+			gSavedSettings.setU32("WindowHeight", mWindowRectRaw.getHeight());
 		}
 
 		LLViewerStats::getInstance()->setStat(LLViewerStats::ST_WINDOW_WIDTH, (F64)width);