--- gtk.orig/gtkprintoperation.c	2012-07-04 16:15:14.024972955 +0100
+++ gtk/gtkprintoperation.c	2012-07-04 16:17:17.244978918 +0100
@@ -2515,10 +2515,18 @@ common_render_page (GtkPrintOperation *o
       page_setup = gtk_print_context_get_page_setup (print_context);
       orientation = gtk_page_setup_get_orientation (page_setup);
 
-      top_margin = gtk_page_setup_get_top_margin (page_setup, GTK_UNIT_POINTS);
-      bottom_margin = gtk_page_setup_get_bottom_margin (page_setup, GTK_UNIT_POINTS);
-      left_margin = gtk_page_setup_get_left_margin (page_setup, GTK_UNIT_POINTS);
-      right_margin = gtk_page_setup_get_right_margin (page_setup, GTK_UNIT_POINTS);
+      if (priv->use_full_page)
+	{
+          top_margin = 0;
+          bottom_margin = 0;
+          left_margin = 0;
+          right_margin = 0;
+        } else {
+          top_margin = gtk_page_setup_get_top_margin (page_setup, GTK_UNIT_POINTS);
+          bottom_margin = gtk_page_setup_get_bottom_margin (page_setup, GTK_UNIT_POINTS);
+          left_margin = gtk_page_setup_get_left_margin (page_setup, GTK_UNIT_POINTS);
+          right_margin = gtk_page_setup_get_right_margin (page_setup, GTK_UNIT_POINTS);
+        }
 
       paper_width = gtk_page_setup_get_paper_width (page_setup, GTK_UNIT_POINTS);
       paper_height = gtk_page_setup_get_paper_height (page_setup, GTK_UNIT_POINTS);
@@ -2661,12 +2669,6 @@ common_render_page (GtkPrintOperation *o
           horizontal_offset = (paper_width * (x_scale / scale) - paper_width) / 2.0 * columns;
           vertical_offset = (paper_height * (y_scale / scale) - paper_height) / 2.0 * rows;
 
-          if (!priv->use_full_page)
-            {
-              horizontal_offset -= right_margin;
-              vertical_offset += top_margin;
-            }
-
           cairo_scale (cr, scale, scale);
 
           cairo_translate (cr,
