diff --git a/src/m_menu.c b/src/m_menu.c
index d9ea6bae1d76d8ef8106ba595fc6c362e049d1cd..3305519c314ae4136a2cbd5ce9192da8c7882bc3 100644
--- a/src/m_menu.c
+++ b/src/m_menu.c
@@ -7233,7 +7233,7 @@ static void M_EmblemHints(INT32 choice)
 
 static void M_DrawEmblemHints(void)
 {
-	INT32 i, j = 0, x, y;
+	INT32 i, j = 0, x, y, left_hints = NUMHINTS;
 	UINT32 collected = 0, local = 0;
 	emblem_t *emblem;
 	const char *hint;
@@ -7250,6 +7250,11 @@ static void M_DrawEmblemHints(void)
 	x = (local > NUMHINTS ? 4 : 12);
 	y = 8;
 
+	// If there are more than 1 page's but less than 2 pages' worth of emblems,
+	// put half (rounded up) of the hints on the left, and half (rounded down) on the right
+	if (local > NUMHINTS && local < (NUMHINTS*2)-1)
+		left_hints = (local + 1) / 2;
+
 	if (!local)
 		V_DrawCenteredString(160, 48, V_YELLOWMAP, "No hidden emblems on this map.");
 	else for (i = 0; i < numemblems; i++)
@@ -7282,7 +7287,7 @@ static void M_DrawEmblemHints(void)
 
 		y += 28;
 
-		if (++j == NUMHINTS)
+		if (++j == left_hints)
 		{
 			x = 4+(BASEVIDWIDTH/2);
 			y = 8;