diff --git a/indra/newview/llfloaterjoystick.cpp b/indra/newview/llfloaterjoystick.cpp
index 06fe2a84c8908d05000d928aa5196373540589b8..78bc63ac8c47fe827dc3fe2668cb42f16fdfa5b4 100644
--- a/indra/newview/llfloaterjoystick.cpp
+++ b/indra/newview/llfloaterjoystick.cpp
@@ -52,6 +52,7 @@ LLFloaterJoystick::LLFloaterJoystick(const LLSD& data)
 {
 	//Called from floater reg: LLUICtrlFactory::getInstance()->buildFloater(this, "floater_joystick.xml");
 
+	initFromSettings();
 }
 
 void LLFloaterJoystick::draw()
@@ -123,10 +124,8 @@ void LLFloaterJoystick::apply()
 {
 }
 
-void LLFloaterJoystick::refresh()
+void LLFloaterJoystick::initFromSettings()
 {
-	LLFloater::refresh();
-
 	mJoystickEnabled = gSavedSettings.getBOOL("JoystickEnabled");
 
 	mJoystickAxis[0] = gSavedSettings.getS32("JoystickAxis0");
@@ -194,6 +193,12 @@ void LLFloaterJoystick::refresh()
 	mFlycamFeathering = gSavedSettings.getF32("FlycamFeathering");
 }
 
+void LLFloaterJoystick::refresh()
+{
+	LLFloater::refresh();
+	initFromSettings();
+}
+
 void LLFloaterJoystick::cancel()
 {
 	gSavedSettings.setBOOL("JoystickEnabled", mJoystickEnabled);
diff --git a/indra/newview/llfloaterjoystick.h b/indra/newview/llfloaterjoystick.h
index f3559c28e9e3e1914046000c7ef6b45687997409..7a2f497c69ff515c898b7b64a38b81dfda43c08a 100644
--- a/indra/newview/llfloaterjoystick.h
+++ b/indra/newview/llfloaterjoystick.h
@@ -55,6 +55,8 @@ class LLFloaterJoystick : public LLFloater
 
 	LLFloaterJoystick(const LLSD& data);
 	virtual ~LLFloaterJoystick();
+
+	void initFromSettings();
 	
 	static void onCommitJoystickEnabled(LLUICtrl*, void*);
 	static void onClickRestoreSNDefaults(void*);