Using tightVNC, the colors are messed up when viewing a PV guest running on a 3.2 hypervisor from a client system with a 16 bit deep display. virt-manager --> viewer works OK. Standalone virt-viewer and other VNC clients have bad colors. This problem is new with Xen 3.2 and the qemu xenfb code. As a short term fix I added a second macro in tools/ioemu/hw/xenfb.c to munge the colors from 32 bit to 16 bit based on an algorithm used by RealVNC. Patch I used is attached, not suggesting it be merged. Is anybody else seeing this problem? By the way, while looking at the original macro I think the last shift for blue should of used BRS instead if GRS. ( Changing that did not make the colors better. ) #define BLT(SRC_T,DST_T,RLS,GLS,BLS,RRS,GRS,BRS,RM,GM,BM) \ for (line = y ; line < h ; line++) { \ SRC_T *src = (SRC_T *)(xenfb->pixels \ + (line * xenfb->row_stride) \ + (x * xenfb->depth / 8)); \ DST_T *dst = (DST_T *)(xenfb->ds->data \ + (line * xenfb->ds->linesize) \ + (x * xenfb->ds->depth / 8)); \ int col; \ for (col = x ; col < w ; col++) { \ *dst = (((*src >> RRS) & RM) << RLS) | \ (((*src >> GRS) & GM) << GLS) | \ - (((*src >> GRS) & BM) << BLS); \ + (((*src >> BRS) & BM) << BLS); \ src++; \ dst++; \ } \ }