--- rxvt-unicode/src/rxvtimg.C 2012/06/07 20:04:54 1.51 +++ rxvt-unicode/src/rxvtimg.C 2012/06/07 20:22:40 1.53 @@ -86,10 +86,10 @@ xi.depth = depth; xi.bytes_per_line = 0; xi.bits_per_pixel = 32; //Z only - xi.red_mask = 0x000000ff; //Z only - xi.green_mask = 0x0000ff00; //Z only - xi.blue_mask = 0x00ff0000; //Z only - xi.obdata = 0; // probbaly unused + xi.red_mask = 0x00000000; //Z only, unused + xi.green_mask = 0x00000000; //Z only, unused + xi.blue_mask = 0x00000000; //Z only, unused + xi.obdata = 0; // probably unused if (!XInitImage (&xi)) rxvt_fatal ("unable to initialise ximage, please report.\n"); @@ -117,7 +117,7 @@ uint8_t g = *src++; uint8_t b = *src++; - uint32_t v = r | (g << 8) | (b << 16); + uint32_t v = (r << 16) | (g << 8) | b; if (ecb_big_endian ()) v = ecb_bswap32 (v); @@ -129,9 +129,11 @@ { uint32_t v = *(uint32_t *)src; src += 4; - if (ecb_big_endian ()) + if (ecb_little_endian ()) v = ecb_bswap32 (v); + v = ecb_rotr32 (v, 8); + *dst++ = v; }