diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp
index cbda906599d6e870c68f86e8817ade52682938dd..4ee4a5357c53eda5dd69ae7e2c99315e265fedbc 100644
--- a/indra/llwindow/llwindowwin32.cpp
+++ b/indra/llwindow/llwindowwin32.cpp
@@ -752,8 +752,6 @@ void LLWindowWin32::close()
 
 	mDragDrop->reset();
 
-	// Make sure cursor is visible and we haven't mangled the clipping state.
-	setMouseClipping(FALSE);
 
 	// Go back to screen mode written in the registry.
 	if (mFullscreen)
@@ -763,13 +761,13 @@ void LLWindowWin32::close()
 
 	// Don't process events in our mainWindowProc any longer.
 	SetWindowLongPtr(mWindowHandle, GWLP_USERDATA, NULL);
-	if (mCallbacks)
-	{
-		mCallbacks->handleFocusLost(this);
-	}
-	else
+
+	// Make sure cursor is visible and we haven't mangled the clipping state.
+	showCursor();
+	setMouseClipping(FALSE);
+	if (gKeyboard)
 	{
-		showCursor();
+		gKeyboard->resetKeys();
 	}
 
 	// Clean up remaining GL state