diff --git a/src/console.c b/src/console.c
index 59d2b3e6c7f9aea0e50b1654aee1551d271f63ed..8746bf03667f6cbc7403122d676337684394f663 100644
--- a/src/console.c
+++ b/src/console.c
@@ -613,15 +613,6 @@ void CON_Ticker(void)
 	con_tick++;
 	con_tick &= 7;
 
-	// if the menu is open then close the console.
-	if (menuactive && con_destlines)
-	{
-		consoletoggle = false;
-		con_destlines = 0;
-		CON_ClearHUD();
-		I_UpdateMouseGrab();
-	}
-
 	// console key was pushed
 	if (consoletoggle)
 	{
@@ -793,7 +784,7 @@ boolean CON_Responder(event_t *ev)
 		// check other keys only if console prompt is active
 		if (!consoleready && key < NUMINPUTS) // metzgermeister: boundary check!!
 		{
-			if (bindtable[key])
+			if (! menuactive && bindtable[key])
 			{
 				COM_BufAddText(bindtable[key]);
 				COM_BufAddText("\n");
diff --git a/src/d_main.c b/src/d_main.c
index 2ff0042fd655040abae37d84167009621812f07d..149fb307147a2471effdb3cb38e39bc1c4a840b7 100644
--- a/src/d_main.c
+++ b/src/d_main.c
@@ -188,14 +188,14 @@ void D_ProcessEvents(void)
 				continue;
 		}
 
-		// Menu input
-		if (M_Responder(ev))
-			continue; // menu ate the event
-
 		// console input
 		if (CON_Responder(ev))
 			continue; // ate the event
 
+		// Menu input
+		if (M_Responder(ev))
+			continue; // menu ate the event
+
 		G_Responder(ev);
 	}
 }
@@ -502,13 +502,12 @@ static void D_Display(void)
 	// vid size change is now finished if it was on...
 	vid.recalc = 0;
 
-	// FIXME: draw either console or menu, not the two
-	if (gamestate != GS_TIMEATTACK)
-		CON_Drawer();
-
 	M_Drawer(); // menu is drawn even on top of everything
 	// focus lost moved to M_Drawer
 
+	if (gamestate != GS_TIMEATTACK)
+		CON_Drawer();
+
 	//
 	// wipe update
 	//