diff --git a/src/r_data.c b/src/r_data.c
index a21ba49ae9c3ae83efc88cf7376fb50af96a3a35..bf570e3ab2167e36c039fe9f3a8f2cf39d8f1292 100644
--- a/src/r_data.c
+++ b/src/r_data.c
@@ -1073,6 +1073,15 @@ void R_ReInitColormaps(UINT16 num)
 	lump = W_GetNumForName(colormap);
 	if (lump == LUMPERROR)
 		lump = W_GetNumForName("COLORMAP");
+	else
+	{
+		if (W_LumpLength(lump) > W_LumpLength(W_GetNumForName("COLORMAP")))
+		{
+			CONS_Alert(CONS_WARNING, "%s lump size is too big, using COLORMAP.\n", colormap);
+			lump = W_GetNumForName("COLORMAP");
+		}
+	}
+
 	W_ReadLump(lump, colormaps);
 
 	// Init Boom colormaps.