diff -up evince-2.20.1/backend/tiff/tiff-document.c.tiff evince-2.20.1/backend/tiff/tiff-document.c --- evince-2.20.1/backend/tiff/tiff-document.c.tiff 2007-10-15 16:12:12.000000000 -0400 +++ evince-2.20.1/backend/tiff/tiff-document.c 2007-11-15 23:02:08.000000000 -0500 @@ -210,6 +210,7 @@ tiff_document_render (EvDocument *d float x_res, y_res; gint rowstride, bytes; guchar *pixels = NULL; + guchar *p; GdkPixbuf *pixbuf; GdkPixbuf *scaled_pixbuf; GdkPixbuf *rotated_pixbuf; @@ -271,6 +272,21 @@ tiff_document_render (EvDocument *d ORIENTATION_TOPLEFT, 1); pop_handlers (); + /* Convert the format returned by libtiff to + * what cairo expects + */ + while (p < pixels + bytes) { + uint32 pixel = *(uint32 *)p; + int r = TIFFGetR(pixel); + int g = TIFFGetG(pixel); + int b = TIFFGetB(pixel); + int a = TIFFGetA(pixel); + *p++ = b; + *p++ = g; + *p++ = r; + *p++ = a; + } + rotated_surface = ev_document_misc_surface_rotate_and_scale (surface, (width * rc->scale) + 0.5, (height * rc->scale * (x_res / y_res)) + 0.5,