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;