Index: Scribus/scribus/scribusdoc.cpp
===================================================================
--- Scribus/scribus/scribusdoc.cpp	(revision 16820)
+++ Scribus/scribus/scribusdoc.cpp	(working copy)
@@ -9796,8 +9796,6 @@
 	currItem->moveBy(newX, newY);
 	if ((currItem->xPos() != oldx) || (currItem->yPos() != oldy))
 		retw = true;
-	//FIXME: stop using m_View
-	QRect oldR(currItem->getRedrawBounding(m_View->scale()));
 	setRedrawBounding(currItem);
 	currItem->OwnPage = OnPage(currItem);
 	return retw;
Index: Scribus/scribus/canvas.cpp
===================================================================
--- Scribus/scribus/canvas.cpp	(revision 16820)
+++ Scribus/scribus/canvas.cpp	(working copy)
@@ -585,21 +585,25 @@
 bool Canvas::adjustBuffer()
 {
 	bool ret = false;
+
 	QRect viewport(-x(), -y(), m_view->viewport()->width(), m_view->viewport()->height());
-// 	qDebug()<<"Canvas::adjustBuffer"<<viewport<<m_viewMode.forceRedraw<<m_viewMode.operItemSelecting;
+	// qDebug()<<"Canvas::adjustBuffer"<<viewport<<m_viewMode.forceRedraw<<m_viewMode.operItemSelecting;
+
+	bool minCanvasCoordHasChanged = false;
 	QPoint minCanvasCoordinate = canvasToLocal(QPointF(0.0, 0.0));
 	if (minCanvasCoordinate != m_oldMinCanvasCoordinate)
 	{
 		m_bufferRect.translate(minCanvasCoordinate.x() - m_oldMinCanvasCoordinate.x(),
 							   minCanvasCoordinate.y() - m_oldMinCanvasCoordinate.y());
 		m_oldMinCanvasCoordinate = minCanvasCoordinate;
+		minCanvasCoordHasChanged = true;
 	}
 #if DRAW_DEBUG_LINES
 //	qDebug() << "adjust buffer" << m_bufferRect << "for viewport" << viewport;
 #endif
-	if (!m_bufferRect.isValid())
+	if (!m_bufferRect.isValid() || minCanvasCoordHasChanged)
 	{
-//		qDebug() << "adjust buffer: invalid buffer, viewport" << viewport;
+		// qDebug() << "adjust buffer: invalid buffer, viewport" << viewport << m_bufferRect;
 		m_bufferRect = viewport;
 		m_buffer = QPixmap(m_bufferRect.width(), m_bufferRect.height());
 		fillBuffer(&m_buffer, m_bufferRect.topLeft(), m_bufferRect);
@@ -623,7 +627,7 @@
 			newRect.translate(0, viewport.top() - m_bufferRect.top());
 		if (m_bufferRect.bottom() < viewport.bottom())
 			newRect.translate(0, viewport.bottom() - m_bufferRect.bottom());
-//		qDebug() << "adjust buffer: " << m_bufferRect << "outside viewport" << viewport << " new rect:" << newRect;
+		// qDebug() << "adjust buffer: " << m_bufferRect << "outside viewport" << viewport << " new rect:" << newRect;
 		
 /*
 		// enlarge buffer by half a screenwidth:
@@ -650,9 +654,9 @@
 */
 		if (!m_bufferRect.intersects(newRect))
 		{
-//			qDebug() << "adjust buffer: fresh buffer" << m_bufferRect << "-->" << newRect;
+			// qDebug() << "adjust buffer: fresh buffer" << m_bufferRect << "-->" << newRect;
 			m_bufferRect = newRect;
-// 			m_buffer = QImage(m_bufferRect.width(), m_bufferRect.height(), QImage::Format_ARGB32);
+			// m_buffer = QImage(m_bufferRect.width(), m_bufferRect.height(), QImage::Format_ARGB32);
 			m_buffer = QPixmap(m_bufferRect.width(), m_bufferRect.height());
 			fillBuffer(&m_buffer, m_bufferRect.topLeft(), m_bufferRect);
 			ret = true;
@@ -667,7 +671,7 @@
 		else
 		{
 			// copy buffer:
-// 			QImage newBuffer(newRect.width(), newRect.height(), QImage::Format_ARGB32);
+			// QImage newBuffer(newRect.width(), newRect.height(), QImage::Format_ARGB32);
 			QPixmap newBuffer(newRect.width(), newRect.height());
 			QPainter p(&newBuffer);
 			int xpos = m_bufferRect.x() - newRect.x();
@@ -696,7 +700,7 @@
 			{
 				height = newRect.height() - ypos;
 			}
-// 			p.drawImage(xpos, ypos, m_buffer, x, y,  width + 1, height + 1); // FIXME: == params drawPixmap?
+			// p.drawImage(xpos, ypos, m_buffer, x, y,  width + 1, height + 1); // FIXME: == params drawPixmap?
 			p.drawPixmap(xpos, ypos, m_buffer, x, y,  width + 1, height + 1);
 #if DRAW_DEBUG_LINES
 			p.setPen(Qt::blue);
