/// <summary>
 /// Moves the grip to the new position.
 /// </summary>
 /// <param name="newPosition">The new position (of the mouse).</param>
 public virtual void MoveGrip(HitTestPointData newPosition)
 {
     if (_moveAction != null)
     {
         _moveAction(newPosition);
     }
     else
     {
         var diffWC = MovementGripHandle.GetMoveVectorInWorldCoordinates(_initialMousePosition, newPosition, _gripCenter); // in World coordinates
         var diffLC = _parent.Transformation.InverseTransform(diffWC);                                                     // now in local (layer) coordinates
         var diffOC = GraphObject._transformation.InverseTransform(diffLC);                                                // now in object coordinates
         GraphObject.SetBoundsFrom(_fixPointRelativePosition, _fixPointAbsolutePosition, _movePointRelativePosition, diffOC, _initialObjectSize, Main.EventFiring.Suppressed);
         _hasMoved = true;
     }
 }