@@ -297,17 +297,40 @@ export function LayerPanel({ imageEditor, imagePath, visualCropEnabled = false }
297297 // Extract filename for display name
298298 const filename = imagePath . split ( '/' ) . pop ( ) || imagePath
299299
300+ // Get base image dimensions for scaling
301+ const baseDimensions = imageEditor . getOriginalDimensions ( )
302+
303+ // Calculate scale to fit layer at 90% of base image size
304+ const targetWidth = baseDimensions . width * 0.9
305+ const targetHeight = baseDimensions . height * 0.9
306+
307+ const scaleX = targetWidth / dimensions . width
308+ const scaleY = targetHeight / dimensions . height
309+ // Use Math.min with 1.0 to prevent upscaling small images
310+ const scale = Math . min ( scaleX , scaleY , 1.0 )
311+
312+ // Only apply transforms if scaling is needed (scale < 1)
313+ let layerTransforms : Partial < ImageLayer > [ 'transforms' ] | undefined
314+ if ( scale < 1 ) {
315+ layerTransforms = {
316+ width : Math . round ( dimensions . width * scale ) ,
317+ height : Math . round ( dimensions . height * scale ) ,
318+ fitIn : true ,
319+ }
320+ }
321+
300322 // Create new layer with default settings
301323 const newLayer : ImageLayer = {
302324 id : `layer-${ Date . now ( ) } ` , // Simple unique ID
303325 imagePath,
304326 originalDimensions : dimensions ,
305- x : 'center' ,
306- y : 'center' ,
327+ x : 0 , // Position at top-left instead of center
328+ y : 0 , // Position at top-left instead of center
307329 alpha : 0 , // 0 = opaque (no transparency)
308330 blendMode : 'normal' ,
309331 visible : true ,
310332 name : filename ,
333+ transforms : layerTransforms , // Apply auto-resize if needed
311334 }
312335
313336 imageEditor . addLayer ( newLayer )
0 commit comments