diff --git a/src/include/menus.h b/src/include/menus.h
index 1abddd0a8..9b1158fba 100644
--- a/src/include/menus.h
+++ b/src/include/menus.h
@@ -250,7 +250,7 @@ typedef struct _menus_ {
 --	Variables
 ----------------------------------------------------------------------------*/
 
-extern const char *CurrentMenu;		/// Currently processed menu
+extern Menu *CurrentMenu;		/// Currently processed menu
 extern char ScenSelectFullPath[1024];	/// Full path to currently selected map
 extern MapInfo *ScenSelectPudInfo;	/// MapInfo of currently selected map
 
@@ -284,7 +284,7 @@ extern void InitMenuFuncHash(void);
 extern void InitMenus(unsigned int race);
 
     /// Draw menu
-extern void DrawMenu(const char *MenuId);
+extern void DrawMenu(Menu *menu);
     /// Draw menu button
 extern void DrawMenuButton(MenuButtonId button,unsigned flags,unsigned w,unsigned h,unsigned x,unsigned y,const int font,const unsigned char *text);
     /// Set menu backgound and draw it
diff --git a/src/ui/menu_proc.cpp b/src/ui/menu_proc.cpp
index 2dd1ae41a..452aef39a 100644
--- a/src/ui/menu_proc.cpp
+++ b/src/ui/menu_proc.cpp
@@ -74,7 +74,7 @@ global struct {
 /**
 **	The currently processed menu
 */
-global const char *CurrentMenu = NULL;
+global Menu *CurrentMenu;
 
 /**
 **	The background picture used by menus
@@ -543,13 +543,12 @@ local void DrawInput(Menuitem *mi, unsigned mx, unsigned my)
 **
 **	@param menu_id	The menu number to display
 */
-global void DrawMenu(const char *menu_id)
+global void DrawMenu(Menu *menu)
 {
     int i, n, l;
-    Menu *menu;
     Menuitem *mi, *mip;
 
-    if (menu_id == NULL || !(menu = FindMenu(menu_id))) {
+    if (menu == NULL) {
 	MustRedraw &= ~RedrawMenu;
 	return;
     }
@@ -668,17 +667,12 @@ local void MenuHandleKeyDown(unsigned key,unsigned keychar)
     Menuitem *mi;
     Menu *menu;
 
-    HandleKeyModifiersDown(key,keychar);
+    HandleKeyModifiersDown(key, keychar);
 
-    if (CurrentMenu == NULL) { // < 0
+    if (CurrentMenu == NULL) {
 	return;
     }
-
-    menu = FindMenu(CurrentMenu);
-    if (menu == NULL) {
-	return;
-    }
-
+    menu = CurrentMenu;
     if (MenuButtonCurSel != -1 && menu->items[MenuButtonCurSel].mitype == MI_TYPE_INPUT) {
 	mi = menu->items + MenuButtonCurSel;
 	if (!(mi->flags & MenuButtonDisabled)) {
@@ -914,20 +908,13 @@ local void MenuHandleKeyUp(unsigned key,unsigned keychar)
 */
 local void MenuHandleKeyRepeat(unsigned key,unsigned keychar)
 {
-    Menu *menu;
-
     HandleKeyModifiersDown(key,keychar);
 
     if (CurrentMenu == NULL) {
 	return;
     }
 
-    menu = FindMenu(CurrentMenu);
-    if (menu == NULL) {
-	return;
-    }
-
-    if (MenuButtonCurSel != -1 && menu->items[MenuButtonCurSel].mitype == MI_TYPE_INPUT) {
+    if (MenuButtonCurSel != -1 && CurrentMenu->items[MenuButtonCurSel].mitype == MI_TYPE_INPUT) {
 	MenuHandleKeyDown(key,keychar);
     }
 }
@@ -955,10 +942,7 @@ local void MenuHandleMouseMove(int x,int y)
 	return;
     }
 
-    menu = FindMenu(CurrentMenu);
-    if (menu == NULL) {
-	return;
-    }
+    menu = CurrentMenu;
 
     n = menu->nitems;
     MenuButtonUnderCursor = -1;
@@ -1232,10 +1216,7 @@ local void MenuHandleButtonDown(unsigned b __attribute__((unused)))
 	return;
     }
 
-    menu = FindMenu(CurrentMenu);
-    if (menu == NULL) {
-	return;
-    }
+    menu = CurrentMenu;
 
     if (MouseButtons&(LeftButton<<MouseHoldShift))
 	return;
@@ -1317,10 +1298,7 @@ local void MenuHandleButtonUp(unsigned b)
 	return;
     }
 
-    menu = FindMenu(CurrentMenu);
-    if (menu == NULL) {
-	return;
-    }
+    menu = CurrentMenu;
 
     if ((1<<b) == LeftButton) {
 	n = menu->nitems;
@@ -1446,9 +1424,8 @@ global void EndMenu(void)
 global void ProcessMenu(const char *menu_id, int loop)
 {
     int i, oldncr;
-    Menu *menu;
     Menuitem *mi;
-    const char *CurrentMenuSave = NULL;
+    Menu *menu, *CurrentMenuSave = NULL;
     int MenuButtonUnderCursorSave = -1;
     int MenuButtonCurSelSave = -1;
 
@@ -1473,7 +1450,7 @@ global void ProcessMenu(const char *menu_id, int loop)
     if (menu == NULL) {
 	return;
     }
-    CurrentMenu = menu_id;
+    CurrentMenu = menu;
     MenuButtonCurSel = -1;
     for (i = 0; i < menu->nitems; ++i) {
 	mi = menu->items + i;
diff --git a/src/ui/menus.cpp b/src/ui/menus.cpp
index 3dd4ef6e2..3da97cac8 100644
--- a/src/ui/menus.cpp
+++ b/src/ui/menus.cpp
@@ -1775,8 +1775,8 @@ local void GameMenuEndScenario(void)
 */
 local void EndScenarioRestart(void)
 {
-    RestartScenario=1;
-    GameRunning=0;
+    RestartScenario = 1;
+    GameRunning = 0;
     EndMenu();
 }
 
@@ -1785,8 +1785,8 @@ local void EndScenarioRestart(void)
 */
 local void EndScenarioSurrender(void)
 {
-    GameResult=GameDefeat;
-    GameRunning=0;
+    GameResult = GameDefeat;
+    GameRunning = 0;
     EndMenu();
 }
 
@@ -1795,8 +1795,8 @@ local void EndScenarioSurrender(void)
 */
 local void EndScenarioQuitMenu(void)
 {
-    QuitToMenu=1;
-    GameRunning=0;
+    QuitToMenu = 1;
+    GameRunning = 0;
     EndMenu();
 }
 
@@ -1805,10 +1805,10 @@ local void EndScenarioQuitMenu(void)
 */
 local void GameMenuEnd(void)
 {
-    InterfaceState=IfaceStateNormal;
-    GameRunning=0;
-    CursorOn=CursorOnUnknown;
-    CurrentMenu=NULL;
+    InterfaceState = IfaceStateNormal;
+    GameRunning = 0;
+    CursorOn = CursorOnUnknown;
+    CurrentMenu = NULL;
 }
 
 local void KeystrokeHelpMenu(void)
@@ -4936,7 +4936,7 @@ local void EditorEditAiPropertiesCancel(void)
 */
 local void EditorQuitMenu(void)
 {
-    EditorRunning=0;
+    EditorRunning = 0;
     GameMenuReturn();
 }