diff --git a/src/m_menu.c b/src/m_menu.c
index f2287177fd6bcad75cff1869fbbcbe8be7ce0e31..27514df5efb5b41ca0b1ba0b2a0811538f3cb440 100644
--- a/src/m_menu.c
+++ b/src/m_menu.c
@@ -7234,7 +7234,7 @@ static void M_EmblemHints(INT32 choice)
 static void M_DrawEmblemHints(void)
 {
 	INT32 i, j = 0, x, y;
-	UINT32 collected = 0, local = 0;
+	UINT32 collected = 0, local = 0, left_hints = NUMHINTS;
 	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;