Index: darkplaces/image.c
diff -u darkplaces/image.c:1.55 darkplaces/image.c:1.56
--- darkplaces/image.c:1.55	Wed Feb 18 09:06:38 2004
+++ darkplaces/image.c	Fri Feb 20 11:31:03 2004
@@ -9,7 +9,7 @@
 
 void Image_CopyMux(qbyte *outpixels, const qbyte *inpixels, int width, int height, int flipx, int flipy, int flipdiagonal, int numincomponents, int numoutcomponents, int *inputcomponentindices)
 {
-	int c, x, y;
+	int index, c, x, y;
 	const qbyte *in, *inrow, *incolumn;
 	if (flipdiagonal)
 	{
@@ -20,7 +20,10 @@
 			{
 				in = incolumn + (flipy ? height - 1 - x : x) * width * numincomponents;
 				for (c = 0;c < numoutcomponents;c++)
-					*outpixels++ = in[inputcomponentindices[c]];
+				{
+					index = inputcomponentindices[c];
+					*outpixels++ = (index & 0x80000000) ? (index - 0x8000000) : in[index];
+				}
 			}
 		}
 	}
@@ -33,7 +36,10 @@
 			{
 				in = inrow + (flipx ? width - 1 - x : x) * numincomponents;
 				for (c = 0;c < numoutcomponents;c++)
-					*outpixels++ = in[inputcomponentindices[c]];
+				{
+					index = inputcomponentindices[c];
+					*outpixels++ = (index & 0x80000000) ? (index - 0x8000000) : in[index];
+				}
 			}
 		}
 	}
Index: darkplaces/image.h
diff -u darkplaces/image.h:1.20 darkplaces/image.h:1.21
--- darkplaces/image.h:1.20	Wed Feb 18 09:06:38 2004
+++ darkplaces/image.h	Fri Feb 20 11:31:03 2004
@@ -4,6 +4,8 @@
 
 // swizzle components (even converting number of components) and flip images
 // (warning: input must be different than output due to non-linear read/write)
+// (tip: inputcomponentindices can contain values | 0x80000000 to tell it to
+// store them directly into output, so 255 | 0x80000000 would write 255)
 void Image_CopyMux(qbyte *outpixels, const qbyte *inpixels, int width, int height, int flipx, int flipy, int flipdiagonal, int numincomponents, int numoutcomponents, int *inputcomponentindices);
 
 // applies gamma correction to RGB pixels, in can be the same as out