Index: glib/poppler-page.cc =================================================================== RCS file: /cvs/poppler/poppler/glib/poppler-page.cc,v retrieving revision 1.47 diff -u -p -r1.47 poppler-page.cc --- glib/poppler-page.cc 2 May 2006 04:38:39 -0000 1.47 +++ glib/poppler-page.cc 14 May 2006 09:18:41 -0000 @@ -139,13 +139,19 @@ poppler_page_prepare_output_dev (Poppler { CairoOutputDev *output_dev; cairo_surface_t *surface; - double width, height; + int rotate; int cairo_width, cairo_height, cairo_rowstride; unsigned char *cairo_data; - poppler_page_get_size (page, &width, &height); - cairo_width = (int) ceil(width * scale); - cairo_height = (int) ceil(height * scale); + rotate = (rotation + page->page->getRotate()) % 360; + + if (rotate == 90 || rotate == 270) { + cairo_width = MAX ((int)(page->page->getCropHeight() * scale + 0.5), 1); + cairo_height = MAX ((int)(page->page->getCropWidth() * scale + 0.5), 1); + } else { + cairo_width = MAX ((int)(page->page->getCropWidth() * scale + 0.5), 1); + cairo_height = MAX ((int)(page->page->getCropHeight() * scale + 0.5), 1); + } output_dev = page->document->output_dev; cairo_rowstride = cairo_width * 4;