diff -rU 3 poppler-0.6.4/glib/poppler-page.cc poppler-0.6.4.new/glib/poppler-page.cc --- poppler-0.6.4/glib/poppler-page.cc 2008-01-21 21:00:59.000000000 +0100 +++ poppler-0.6.4.new/glib/poppler-page.cc 2008-04-30 13:30:19.000000000 +0200 @@ -425,6 +425,7 @@ output_dev = page->document->output_dev; output_dev->setCairo (cairo); + output_dev->setPrinting (true); /* NOTE: instead of passing -1 we should/could use cairo_clip_extents() * to get a bounding box */ diff -rU 3 poppler-0.6.4/poppler/CairoOutputDev.cc poppler-0.6.4.new/poppler/CairoOutputDev.cc --- poppler-0.6.4/poppler/CairoOutputDev.cc 2008-01-21 21:00:59.000000000 +0100 +++ poppler-0.6.4.new/poppler/CairoOutputDev.cc 2008-04-30 13:30:39.000000000 +0200 @@ -83,6 +83,7 @@ cairo = NULL; currentFont = NULL; prescaleImages = gTrue; + printing=gTrue; groupColorSpaceStack = NULL; group = NULL; @@ -695,7 +696,7 @@ cairo_matrix_t matrix; cairo_get_matrix (cairo, &matrix); - if (prescaleImages && matrix.xy == 0.0 && matrix.yx == 0.0) { + if (!printing && prescaleImages && matrix.xy == 0.0 && matrix.yx == 0.0) { drawImageMaskPrescaled(state, ref, str, width, height, invert, inlineImg); } else { drawImageMaskRegular(state, ref, str, width, height, invert, inlineImg); diff -rU 3 poppler-0.6.4/poppler/CairoOutputDev.h poppler-0.6.4.new/poppler/CairoOutputDev.h --- poppler-0.6.4/poppler/CairoOutputDev.h 2008-01-21 21:00:59.000000000 +0100 +++ poppler-0.6.4.new/poppler/CairoOutputDev.h 2008-04-30 13:30:54.000000000 +0200 @@ -189,6 +189,7 @@ GBool isReverseVideo() { return gFalse; } void setCairo (cairo_t *cr); + void setPrinting (GBool printing) { this->printing = printing; } protected: void doPath(GfxState *state, GfxPath *path); @@ -206,6 +207,7 @@ cairo_t *cairo; cairo_matrix_t orig_matrix; GBool needFontUpdate; // set when the font needs to be updated + GBool printing; cairo_surface_t *surface; cairo_glyph_t *glyphs; int glyphCount;