diff --git a/src/libs/vtools/tools/vtoolseamallowance.cpp b/src/libs/vtools/tools/vtoolseamallowance.cpp
index d2b0da730..4bce8e9e2 100644
--- a/src/libs/vtools/tools/vtoolseamallowance.cpp
+++ b/src/libs/vtools/tools/vtoolseamallowance.cpp
@@ -786,6 +786,7 @@ void VToolSeamAllowance::SaveResizeGrainline(qreal dLength)
     VPiece newDet = oldDet;
 
     dLength = FromPixel(dLength, *VDataTool::data.GetPatternUnit());
+    newDet.GetGrainlineGeometry().SetPos(m_grainLine->pos());
     newDet.GetGrainlineGeometry().SetLength(QString().setNum(dLength));
     SavePieceOptions* resizeCommand = new SavePieceOptions(oldDet, newDet, doc, id);
     resizeCommand->setText(tr("resize grainline"));
diff --git a/src/libs/vwidgets/vgrainlineitem.cpp b/src/libs/vwidgets/vgrainlineitem.cpp
index 0a138bb5f..9b6264115 100644
--- a/src/libs/vwidgets/vgrainlineitem.cpp
+++ b/src/libs/vwidgets/vgrainlineitem.cpp
@@ -381,7 +381,7 @@ void VGrainlineItem::mouseMoveEvent(QGraphicsSceneMouseEvent* pME)
     {
         qreal dLen = qSqrt(ptDiff.x()*ptDiff.x() + ptDiff.y()*ptDiff.y());
         qreal dAng = qAtan2(-ptDiff.y(), ptDiff.x());
-        dLen = dLen*qCos(dAng - m_dRotation);
+        dLen = -dLen*qCos(dAng - m_dRotation);
         qreal dPrevLen = m_dLength;
         // try with new length
         if (not (m_moveType & IsMovable))
@@ -394,7 +394,12 @@ void VGrainlineItem::mouseMoveEvent(QGraphicsSceneMouseEvent* pME)
 
         if (m_moveType & IsMovable)
         {
-            pos = m_ptStartPos;
+            QLineF grainline(this->pos().x(), this->pos().y(),
+                             this->pos().x() + dPrevLen, this->pos().y());
+            grainline.setAngle(qRadiansToDegrees(m_dRotation));
+            grainline = QLineF(grainline.p2(), grainline.p1());
+            grainline.setLength(m_dLength);
+            pos = grainline.p2();
         }
         else
         {
@@ -416,10 +421,7 @@ void VGrainlineItem::mouseMoveEvent(QGraphicsSceneMouseEvent* pME)
         }
         else
         {
-            if (not (m_moveType & IsMovable))
-            {
-                setPos(pos);
-            }
+            setPos(pos);
         }
 
         UpdateRectangle();