diff --git a/src/console.c b/src/console.c
index 54fde7af7..fe865abe6 100644
--- a/src/console.c
+++ b/src/console.c
@@ -1632,6 +1632,8 @@ void CON_Drawer(void)
 
 	if (con_curlines > 0)
 		CON_DrawConsole();
-	else if (gamestate == GS_LEVEL || gamestate == GS_INTERMISSION || gamestate == GS_CUTSCENE || gamestate == GS_CREDITS)
+	else if (gamestate == GS_LEVEL
+	|| gamestate == GS_INTERMISSION || gamestate == GS_CUTSCENE
+	|| gamestate == GS_CREDITS || gamestate == GS_EVALUATION)
 		CON_DrawHudlines();
 }
diff --git a/src/d_main.c b/src/d_main.c
index 7a8a85f25..ff9dd22c2 100644
--- a/src/d_main.c
+++ b/src/d_main.c
@@ -352,6 +352,7 @@ static void D_Display(void)
 
 		case GS_EVALUATION:
 			F_GameEvaluationDrawer();
+			HU_Erase();
 			HU_Drawer();
 			break;
 
diff --git a/src/g_game.c b/src/g_game.c
index cbf340a1d..0c42a9587 100644
--- a/src/g_game.c
+++ b/src/g_game.c
@@ -1798,7 +1798,6 @@ boolean G_Responder(event_t *ev)
 			return true;
 		}
 	}
-
 	else if (gamestate == GS_CREDITS)
 	{
 		if (HU_Responder(ev))
@@ -1810,17 +1809,15 @@ boolean G_Responder(event_t *ev)
 			return true;
 		}
 	}
-
 	else if (gamestate == GS_CONTINUING)
 	{
 		if (F_ContinueResponder(ev))
 			return true;
 	}
 	// Demo End
-	else if (gamestate == GS_GAMEEND || gamestate == GS_EVALUATION || gamestate == GS_CREDITS)
+	else if (gamestate == GS_GAMEEND)
 		return true;
-
-	else if (gamestate == GS_INTERMISSION)
+	else if (gamestate == GS_INTERMISSION || gamestate == GS_EVALUATION)
 		if (HU_Responder(ev))
 			return true; // chat ate the event
 
@@ -1977,6 +1974,7 @@ void G_Ticker(boolean run)
 		case GS_EVALUATION:
 			if (run)
 				F_GameEvaluationTicker();
+			HU_Ticker();
 			break;
 
 		case GS_CONTINUING: