+ in = data + y * width * 4;
+ end = in + width * 4;
+ for (;in < end;in += 4)
+ {
+ *out++ = in[2];
+ *out++ = in[1];
+ *out++ = in[0];
+ *out++ = in[3];
+ }
+ }
+ FS_WriteFile (filename, buffer, width*height*4 + 18 );
+ }
+ else
+ {
+ // save only the color channels
+ buffer[16] = 24; // pixel size
+ buffer[17] = 0; // 8 bits of alpha
+
+ // swap rgba to bgr and flip upside down
+ out = buffer + 18;
+ for (y = height - 1;y >= 0;y--)
+ {
+ in = data + y * width * 4;
+ end = in + width * 4;
+ for (;in < end;in += 4)
+ {
+ *out++ = in[2];
+ *out++ = in[1];
+ *out++ = in[0];
+ }