diff --git a/scribus/canvasmode_normal.cpp b/scribus/canvasmode_normal.cpp
index db3365b07..05d0802ad 100644
--- a/scribus/canvasmode_normal.cpp
+++ b/scribus/canvasmode_normal.cpp
@@ -765,9 +765,13 @@ void CanvasMode_Normal::mouseMoveEvent(QMouseEvent *m)
 					QRect tx = p.mapRect(QRect(0, 0, static_cast<int>(currItem->width()), static_cast<int>(currItem->height())));
 					if ((tx.intersects(mpo)) && (!currItem->locked()))
 					{
-						m_view->setCursor(QCursor(Qt::OpenHandCursor));
+						Qt::CursorShape cursorShape = Qt::OpenHandCursor;
+
 						if (!currItem->sizeLocked())
-							m_view->HandleCurs(currItem, mpo);
+							cursorShape = m_view->getResizeCursor(currItem, mpo, cursorShape);
+						m_view->setCursor(QCursor(cursorShape));
 					}
 				}
 			}
diff --git a/scribus/scribusview.cpp b/scribus/scribusview.cpp
index 0fe36c428..aa46227f7 100644
--- a/scribus/scribusview.cpp
+++ b/scribus/scribusview.cpp
@@ -1737,11 +1737,11 @@ void ScribusView::dragTimerTimeOut()
 	// 	qApp->changeOverrideCursor(QCursor(loadIcon("dragpix.png")));
 }
 
-void ScribusView::HandleCurs(PageItem *currItem, QRect mpo)
+Qt::CursorShape ScribusView::getResizeCursor(PageItem *currItem, QRect mpo, Qt::CursorShape cursorShape)
 {
 	QPoint tx, tx2;
 	QTransform ma;
-	//	ma.translate(-Doc->minCanvasCoordinate.x()*m_canvas->scale(), -Doc->minCanvasCoordinate.y()*m_canvas->scale());
+
 	m_canvas->Transform(currItem, ma);
 	tx = ma.map(QPoint(static_cast<int>(currItem->width()), 0));
 	tx2 = ma.map(QPoint(0, static_cast<int>(currItem->height())));
@@ -1749,9 +1749,9 @@ void ScribusView::HandleCurs(PageItem *currItem, QRect mpo)
 	{
 		double rr = fabs(currItem->rotation());
 		if (((rr >= 0.0) && (rr < 45.0)) || ((rr >= 135.0) && (rr < 225.0)) || ((rr >=315.0) && (rr <= 360.0)))
-			setCursor(QCursor(Qt::SizeBDiagCursor));
+			cursorShape = Qt::SizeBDiagCursor;
 		if (((rr >= 45.0) && (rr < 135.0)) || ((rr >= 225.0) && (rr < 315.0)))
-			setCursor(QCursor(Qt::SizeFDiagCursor));
+			cursorShape = Qt::SizeFDiagCursor;
 	}
 	tx = ma.map(QPoint(static_cast<int>(currItem->width()), static_cast<int>(currItem->height())/2));
 	tx2 = ma.map(QPoint(0, static_cast<int>(currItem->height())/2));
@@ -1759,9 +1759,9 @@ void ScribusView::HandleCurs(PageItem *currItem, QRect mpo)
 	{
 		double rr = fabs(currItem->rotation());
 		if (((rr >= 0.0) && (rr < 45.0)) || ((rr >= 135.0) && (rr < 225.0)) || ((rr >= 315.0) && (rr <= 360.0)))
-			setCursor(QCursor(Qt::SizeHorCursor));
+			cursorShape = Qt::SizeHorCursor;
 		if (((rr >= 45.0) && (rr < 135.0)) || ((rr >= 225.0) && (rr < 315.0)))
-			setCursor(QCursor(Qt::SizeVerCursor));
+			cursorShape = Qt::SizeVerCursor;
 	}
 	tx = ma.map(QPoint(static_cast<int>(currItem->width())/2, 0));
 	tx2 = ma.map(QPoint(static_cast<int>(currItem->width())/2, static_cast<int>(currItem->height())));
@@ -1769,9 +1769,9 @@ void ScribusView::HandleCurs(PageItem *currItem, QRect mpo)
 	{
 		double rr = fabs(currItem->rotation());
 		if (((rr >= 0.0) && (rr < 45.0)) || ((rr >= 135.0) && (rr < 225.0)) || ((rr >= 315.0) && (rr <= 360.0)))
-			setCursor(QCursor(Qt::SizeVerCursor));
+			cursorShape = Qt::SizeVerCursor;
 		if (((rr >= 45.0) && (rr < 135.0)) || ((rr >= 225.0) && (rr < 315.0)))
-			setCursor(QCursor(Qt::SizeHorCursor));
+			cursorShape = Qt::SizeHorCursor;
 	}
 	tx = ma.map(QPoint(static_cast<int>(currItem->width()), static_cast<int>(currItem->height())));
 	tx2 = ma.map(QPoint(0, 0));
@@ -1782,11 +1782,13 @@ void ScribusView::HandleCurs(PageItem *currItem, QRect mpo)
 			double rr = fabs(currItem->rotation());
 			if (((rr >= 0.0) && (rr < 45.0)) || ((rr >= 135.0) && (rr < 225.0)) ||
 					((rr >= 315.0) && (rr <= 360.0)))
-				setCursor(QCursor(Qt::SizeFDiagCursor));
+				cursorShape = Qt::SizeFDiagCursor;
 			if (((rr >= 45.0) && (rr < 135.0)) || ((rr >= 225.0) && (rr < 315.0)))
-				setCursor(QCursor(Qt::SizeBDiagCursor));
+				cursorShape = Qt::SizeBDiagCursor;
 		}
 	}
+
+	return cursorShape;
 }
 
 void ScribusView::SelectItemNr(uint nr, bool draw, bool single)
diff --git a/scribus/scribusview.h b/scribus/scribusview.h
index d05424e2a..50f3f6758 100644
--- a/scribus/scribusview.h
+++ b/scribus/scribusview.h
@@ -176,7 +176,8 @@ public:
 	bool PointOnLine(QPoint Start, QPoint Ende, QRect MArea);
 	void TransformPoly(int mode, int rot = 1, double scaling = 1.0);
 	bool slotSetCurs(int x, int y);
-	void HandleCurs(PageItem *currItem, QRect mpo);
+	// \brief return a resize cursor if the mouse is on a handle.
+	Qt::CursorShape getResizeCursor(PageItem *currItem, QRect mpo, Qt::CursorShape cursorShape = Qt::ArrowCursor);
 	void Deselect(bool prop = true);
 	void SelectItemNr(uint nr, bool draw = true, bool single = false);
 	void SelectItem(PageItem *pi, bool draw = true, bool single = false);
