diff --git a/src/include/menus.h b/src/include/menus.h
index ebd50c7e4..9a5c2c403 100644
--- a/src/include/menus.h
+++ b/src/include/menus.h
@@ -297,6 +297,8 @@ extern void NetClientCheckLocalState(void);
 extern void SoundOptions(void);
     /// Speed options menu
 extern void SpeedSettings(void);
+    /// Preferences menu
+extern void Preferences(void);
 
 //@}
 
diff --git a/src/ui/interface.cpp b/src/ui/interface.cpp
index 810572666..4572b517c 100644
--- a/src/ui/interface.cpp
+++ b/src/ui/interface.cpp
@@ -355,7 +355,7 @@ local void UiEnterPreferencesOptionsMenu(void)
 {
     GamePaused=1;
     SetStatusLine("Game Paused");
-    ProcessMenu(MENU_PREFERENCES, 1);
+    Preferences();
     InterfaceState=IfaceStateNormal;
     ClearStatusLine();
     MarkDrawEntireMap();
diff --git a/src/ui/menus.cpp b/src/ui/menus.cpp
index b857377f8..8e1e51ce5 100644
--- a/src/ui/menus.cpp
+++ b/src/ui/menus.cpp
@@ -82,7 +82,6 @@ local void GameMenuReturn(void);
 local void GameShowCredits(void);
 local void GameMenuObjectives(void);
 local void GameMenuEndScenario(void);
-local void Preferences(void);
 local void GameOptions(void);
 
 local void SetMasterPower(Menuitem *mi);
@@ -92,6 +91,7 @@ local void SetFogOfWar(Menuitem *mi);
 
 global void SoundOptions(void);
 global void SpeedSettings(void);
+global void Preferences(void);
 
 local void EndScenarioRestart(void);
 local void EndScenarioSurrender(void);
@@ -1877,7 +1877,7 @@ global void SpeedSettings(void)
     ProcessMenu(MENU_SPEED_SETTINGS, 1);
 }
 
-local void Preferences(void)
+global void Preferences(void)
 {
     if (!TheMap.NoFogOfWar)
 	PreferencesMenuItems[1].d.gem.state = MI_GSTATE_CHECKED;