|  | @@ -106,7 +106,7 @@ export const transformElements = (
 | 
	
		
			
				|  |  |        updateBoundElements(element);
 | 
	
		
			
				|  |  |      } else if (transformHandleType) {
 | 
	
		
			
				|  |  |        resizeSingleElement(
 | 
	
		
			
				|  |  | -        pointerDownState.originalElements.get(element.id) as typeof element,
 | 
	
		
			
				|  |  | +        pointerDownState.originalElements,
 | 
	
		
			
				|  |  |          shouldMaintainAspectRatio,
 | 
	
		
			
				|  |  |          element,
 | 
	
		
			
				|  |  |          transformHandleType,
 | 
	
	
		
			
				|  | @@ -397,7 +397,7 @@ const resizeSingleTextElement = (
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  export const resizeSingleElement = (
 | 
	
		
			
				|  |  | -  stateAtResizeStart: NonDeletedExcalidrawElement,
 | 
	
		
			
				|  |  | +  originalElements: PointerDownState["originalElements"],
 | 
	
		
			
				|  |  |    shouldMaintainAspectRatio: boolean,
 | 
	
		
			
				|  |  |    element: NonDeletedExcalidrawElement,
 | 
	
		
			
				|  |  |    transformHandleDirection: TransformHandleDirection,
 | 
	
	
		
			
				|  | @@ -405,6 +405,7 @@ export const resizeSingleElement = (
 | 
	
		
			
				|  |  |    pointerX: number,
 | 
	
		
			
				|  |  |    pointerY: number,
 | 
	
		
			
				|  |  |  ) => {
 | 
	
		
			
				|  |  | +  const stateAtResizeStart = originalElements.get(element.id)!;
 | 
	
		
			
				|  |  |    // Gets bounds corners
 | 
	
		
			
				|  |  |    const [x1, y1, x2, y2] = getResizedElementAbsoluteCoords(
 | 
	
		
			
				|  |  |      stateAtResizeStart,
 | 
	
	
		
			
				|  | @@ -439,6 +440,9 @@ export const resizeSingleElement = (
 | 
	
		
			
				|  |  |    let scaleX = atStartBoundsWidth / boundsCurrentWidth;
 | 
	
		
			
				|  |  |    let scaleY = atStartBoundsHeight / boundsCurrentHeight;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +  let boundTextFont: { fontSize?: number; baseline?: number } = {};
 | 
	
		
			
				|  |  | +  const boundTextElement = getBoundTextElement(element);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    if (transformHandleDirection.includes("e")) {
 | 
	
		
			
				|  |  |      scaleX = (rotatedPointer[0] - startTopLeft[0]) / boundsCurrentWidth;
 | 
	
		
			
				|  |  |    }
 | 
	
	
		
			
				|  | @@ -452,8 +456,6 @@ export const resizeSingleElement = (
 | 
	
		
			
				|  |  |      scaleY = (startBottomRight[1] - rotatedPointer[1]) / boundsCurrentHeight;
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  const boundTextElement = getBoundTextElement(element);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |    // Linear elements dimensions differ from bounds dimensions
 | 
	
		
			
				|  |  |    const eleInitialWidth = stateAtResizeStart.width;
 | 
	
		
			
				|  |  |    const eleInitialHeight = stateAtResizeStart.height;
 | 
	
	
		
			
				|  | @@ -484,10 +486,34 @@ export const resizeSingleElement = (
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    if (boundTextElement) {
 | 
	
		
			
				|  |  | -    const minWidth = getApproxMinLineWidth(getFontString(boundTextElement));
 | 
	
		
			
				|  |  | -    const minHeight = getApproxMinLineHeight(getFontString(boundTextElement));
 | 
	
		
			
				|  |  | -    eleNewWidth = Math.ceil(Math.max(eleNewWidth, minWidth));
 | 
	
		
			
				|  |  | -    eleNewHeight = Math.ceil(Math.max(eleNewHeight, minHeight));
 | 
	
		
			
				|  |  | +    const stateOfBoundTextElementAtResize = originalElements.get(
 | 
	
		
			
				|  |  | +      boundTextElement.id,
 | 
	
		
			
				|  |  | +    ) as typeof boundTextElement | undefined;
 | 
	
		
			
				|  |  | +    if (stateOfBoundTextElementAtResize) {
 | 
	
		
			
				|  |  | +      boundTextFont = {
 | 
	
		
			
				|  |  | +        fontSize: stateOfBoundTextElementAtResize.fontSize,
 | 
	
		
			
				|  |  | +        baseline: stateOfBoundTextElementAtResize.baseline,
 | 
	
		
			
				|  |  | +      };
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    if (shouldMaintainAspectRatio) {
 | 
	
		
			
				|  |  | +      const nextFont = measureFontSizeFromWH(
 | 
	
		
			
				|  |  | +        boundTextElement,
 | 
	
		
			
				|  |  | +        eleNewWidth - BOUND_TEXT_PADDING * 2,
 | 
	
		
			
				|  |  | +        eleNewHeight - BOUND_TEXT_PADDING * 2,
 | 
	
		
			
				|  |  | +      );
 | 
	
		
			
				|  |  | +      if (nextFont === null) {
 | 
	
		
			
				|  |  | +        return;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      boundTextFont = {
 | 
	
		
			
				|  |  | +        fontSize: nextFont.size,
 | 
	
		
			
				|  |  | +        baseline: nextFont.baseline,
 | 
	
		
			
				|  |  | +      };
 | 
	
		
			
				|  |  | +    } else {
 | 
	
		
			
				|  |  | +      const minWidth = getApproxMinLineWidth(getFontString(boundTextElement));
 | 
	
		
			
				|  |  | +      const minHeight = getApproxMinLineHeight(getFontString(boundTextElement));
 | 
	
		
			
				|  |  | +      eleNewWidth = Math.ceil(Math.max(eleNewWidth, minWidth));
 | 
	
		
			
				|  |  | +      eleNewHeight = Math.ceil(Math.max(eleNewHeight, minHeight));
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    const [newBoundsX1, newBoundsY1, newBoundsX2, newBoundsY2] =
 | 
	
	
		
			
				|  | @@ -602,6 +628,9 @@ export const resizeSingleElement = (
 | 
	
		
			
				|  |  |        newSize: { width: resizedElement.width, height: resizedElement.height },
 | 
	
		
			
				|  |  |      });
 | 
	
		
			
				|  |  |      mutateElement(element, resizedElement);
 | 
	
		
			
				|  |  | +    if (boundTextElement && boundTextFont) {
 | 
	
		
			
				|  |  | +      mutateElement(boundTextElement, { fontSize: boundTextFont.fontSize });
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |      handleBindTextResize(element, transformHandleDirection);
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  };
 |