diff --git a/src/element/dragElements.ts b/src/element/dragElements.ts index 251b345f..e4583e4a 100644 --- a/src/element/dragElements.ts +++ b/src/element/dragElements.ts @@ -109,11 +109,22 @@ export const dragNewElement = ( if (widthAspectRatio) { height = width / widthAspectRatio; } else { - ({ width, height } = getPerfectElementSize( - elementType, - width, - y < originY ? -height : height, - )); + // Depending on where the cursor is at (x, y) relative to where the starting point is + // (originX, originY), we use ONLY width or height to control size increase. + // This allows the cursor to always "stick" to one of the sides of the bounding box. + if (Math.abs(y - originY) > Math.abs(x - originX)) { + ({ width, height } = getPerfectElementSize( + elementType, + height, + x < originX ? -width : width, + )); + } else { + ({ width, height } = getPerfectElementSize( + elementType, + width, + y < originY ? -height : height, + )); + } if (height < 0) { height = -height;