Padding, corner radius & preview/export consistency
This guide uses an injectable geometry model, not real image bytes. Paste the model below into the spec field of the workspace (reach /app/?lang=en&tool=beautify from the docs page):
{"image":{"id":"shot-01","width":1280,"height":800,"bytes":245760,"hasAlpha":true,"format":"png"},"crop":{"x":0,"y":0,"width":1280,"height":800},"padding":48,"radius":20,"background":{"kind":"gradient","from":"#E8F3EC","to":"#F7F8F5","alpha":1},"shadow":{"blur":24,"offsetY":12,"alpha":0.18},"frame":{"kind":"browser","assetStatus":"ok"},"preset":"auto","format":"png","scale":1,"clipboardMode":"desktop-paste"}
The model describes a transparent 1280×800 PNG with 48 px padding, a 20 px corner radius, a subtle gradient and a browser frame. The design canvas is 1400×952 (1280+96+24 horizontal chrome; 800+96+56 vertical chrome). Change padding to 0/24/96/256 and radius to 0/12/64/200: the four results differ, yet each preview signature equals its export signature because both are uniform scalings of one layer list.
Preview is capped independently at 1200 px on its longest side (here 1200×816, scale 0.857143). Export is 1400×952 at 1x and 2800×1904 at 2x — 1,332,800 and 5,331,200 pixels. resolutionSeparation keeps all three distinct: preview resolution never determines export resolution.
The result includes composite.steps: transparent clearRect → gradient background → browser frame → shadow → roundRect clip → source-over image; transparentBlackEdge=false. The output is a JSON plan, not an image, named like shot-beautify-20261115040000.json; it downloads only when you click Download plan, and downloadableImage=false.