diff --git a/graphics/x11drv/dib.c b/graphics/x11drv/dib.c
index 7a692d15f1b348f977fa54696592f25eda086433..4b2c3e3e57ca2c4ead4906a49b6c065ae0b3aac0 100644
--- a/graphics/x11drv/dib.c
+++ b/graphics/x11drv/dib.c
@@ -137,6 +137,10 @@ int *X11DRV_DIB_GenColorMap( DC *dc, int *colorMapping,
 
     if (coloruse == DIB_RGB_COLORS)
     {
+	int max = 1 << depth;
+
+	if (end > max) end = max;
+
         if (quads)
         {
             RGBQUAD * rgb = (RGBQUAD *)colorPtr;