diff --git a/src/rowpainter.C b/src/rowpainter.C
index 3b703b58d4..96c74c6f14 100644
--- a/src/rowpainter.C
+++ b/src/rowpainter.C
@@ -855,17 +855,19 @@ int paintPars(BufferView const & bv, Painter & pain,
 	ParagraphList & pars = text.paragraphs();
 
 	int y = pars[pit].y + text.yo_ - bv.top_y();
-	int const y2 = pain.paperHeight();
 
 	for (; pit != end; ++pit) {
 		RowList::iterator row = pars[pit].rows.begin();
 		RowList::iterator rend = pars[pit].rows.end();
 
+		// We draw full paragraphs to get the (xo, yo) cache of all
+		// contained insets right. This is needed for properly working
+		// editXY. And maybe not even sufficient.
+		// FIXME: Alfredo, please have a look at the coordinate business
+		// again.
 		for ( ; row != rend; ++row) {
 			RowPainter(bv, pain, text, pit, row, y);
 			y += row->height();
-			if (y >= y2)
-				break;
 		}
 
 	}
@@ -878,7 +880,6 @@ int paintPars(BufferView const & bv, Painter & pain,
 
 void refreshPar(BufferView const & bv, LyXText const & text, par_type pit)
 {
-
 	static NullPainter nop;
 	paintPars(bv, nop, text, pit, pit + 1);
 }