A crop is not a vague visual gesture. It is an integer rectangle in the decoded source grid. CropFrame treats the top-left decoded pixel as coordinate 0,0; X moves right and Y moves down. Width and height count kept pixels, so a rectangle x=20, y=10, width=300, height=200 keeps source columns 20 through 319 and rows 10 through 209.
Every edge must remain inside the source
For a 1200×800 source, X must be at least 0 and x+width no more than 1200; Y follows the same rule against 800. A width or height of zero has no pixels and is invalid. CropFrame clamps pointer movement, while exact fields reject an invalid rectangle instead of silently inventing a different one.
Crop size is output size
A 300×200 crop creates a 300×200 Canvas. CropFrame draws that source region at the same pixel dimensions: it neither stretches nor invents pixels. Encoding can change bytes and metadata, but geometry remains explicit and testable.
Keep the crop in its proper scope
CropFrame creates a new Canvas-decoded image and does not preserve metadata, provenance, measurements or evidentiary fidelity. Use it for ordinary digital publishing and design. Do not use it to prepare identity, medical, legal, inspection, emergency, navigation or other safety-critical imagery, and independently verify every important result.