diff --git a/src/r_data.c b/src/r_data.c
index f1f04b2d2f6b13b28af7d4baeb69a3d497cc588e..ffc6cc7fdc6ca7a8f811a74f79c3458f896bd6dc 100644
--- a/src/r_data.c
+++ b/src/r_data.c
@@ -1359,7 +1359,9 @@ void R_ClearColormaps(void)
 //
 void R_AddColormapToList(extracolormap_t *extra_colormap)
 {
+#ifndef COLORMAPREVERSELIST
 	extracolormap_t *exc;
+#endif
 
 	if (!extra_colormaps)
 	{
@@ -1369,11 +1371,18 @@ void R_AddColormapToList(extracolormap_t *extra_colormap)
 		return;
 	}
 
+#ifdef COLORMAPREVERSELIST
+	extra_colormaps->prev = extra_colormap;
+	extra_colormap->next = extra_colormaps;
+	extra_colormaps = extra_colormap;
+	extra_colormap->prev = 0;
+#else
 	for (exc = extra_colormaps; exc->next; exc = exc->next);
 
 	exc->next = extra_colormap;
 	extra_colormap->prev = exc;
 	extra_colormap->next = 0;
+#endif
 }
 
 #ifdef EXTRACOLORMAPLUMPS
diff --git a/src/r_data.h b/src/r_data.h
index 5600d36dc0e2eef8b65435e74eaf134ac6ac2603..e6eec41b451bbf1c92d874d3568b656a2927f2c9 100644
--- a/src/r_data.h
+++ b/src/r_data.h
@@ -100,6 +100,9 @@ INT32 R_CheckTextureNumForName(const char *name);
 // Uncomment to enable
 //#define EXTRACOLORMAPLUMPS
 
+// Uncomment to make extra_colormaps order Newest -> Oldest
+//#define COLORMAPREVERSELIST
+
 void R_ReInitColormaps(UINT16 num);
 void R_ClearColormaps(void);
 void R_AddColormapToList(extracolormap_t *extra_colormap);