diff --git a/src/cell-draw.c b/src/cell-draw.c
index a4670a2..e7c84c3 100644
--- a/src/cell-draw.c
+++ b/src/cell-draw.c
@@ -405,12 +405,6 @@ cell_draw (GnmCell const *cell, cairo_t *cr,
 			      height * PANGO_SCALE,
 			      h_center == -1 ? -1 : (h_center * PANGO_SCALE),
 			      &fore_color, &x, &y)) {
-
-		/* +1 to get past left grid-line.  */
-		cairo_rectangle (cr, x1 + 1 + GNM_COL_MARGIN,
-				 y1 + 1 + GNM_ROW_MARGIN,
-				 width, height);
-
 		cairo_save (cr);
 
 		/*
@@ -418,32 +412,31 @@ cell_draw (GnmCell const *cell, cairo_t *cr,
 		 * approximation to the right effect.  (The right way
 		 * would be to create a proper cellspan type.)
 		 */
-		if (!rv->rotation)
+		if (!rv->rotation) {
+			/* +1 to get past left grid-line.  */
+			cairo_rectangle (cr, x1 + 1 + GNM_COL_MARGIN,
+					 y1 + 1 + GNM_ROW_MARGIN,
+					 width, height);
 			cairo_clip (cr);
+		}
 
 		/* See http://bugzilla.gnome.org/show_bug.cgi?id=105322 */
 		cairo_set_source_rgba (cr, GO_COLOR_TO_CAIRO (fore_color));
 
 		if (rv->rotation) {
 			GnmRenderedRotatedValue *rrv = (GnmRenderedRotatedValue *)rv;
-			PangoContext *context = pango_layout_get_context (rv->layout);
 			struct GnmRenderedRotatedValueInfo const *li = rrv->lines;
 			GSList *lines;
 
-			pango_context_set_matrix (context, &rrv->rotmat);
-			pango_layout_context_changed (rv->layout);
 			for (lines = pango_layout_get_lines (rv->layout);
 			     lines;
 			     lines = lines->next, li++) {
 				cairo_save (cr);
 				cairo_move_to (cr, x1 + PANGO_PIXELS (x + li->dx), y1 + PANGO_PIXELS (y + li->dy));
-				cairo_rotate (cr, -rv->rotation * M_PI / 180);
+				cairo_rotate (cr, rv->rotation * (-M_PI / 180));
 				pango_cairo_show_layout_line (cr, lines->data);
 				cairo_restore (cr);
 			}
-			pango_context_set_matrix (context, NULL);
-			pango_layout_context_changed (rv->layout);
-			cairo_new_path (cr);
 		} else {
 			cairo_save (cr);
 			cairo_translate (cr, x1 + PANGO_PIXELS (x), y1 + PANGO_PIXELS (y));
