Lightroom saves one Upright matrix per mode (crs:UprightTransform_0 to _5). LightCraft read
only the mode and solved the photo again, so on public references its framing was 23 to 78 px
away from Lightroom's export on average. The selected mode's matrix is now kept where the
photo's frame is known (photo import, Read Metadata from File, Lightroom catalog import) and
turned from Lightroom's stored-image frame into LightCraft's oriented, centred one.
The convention was measured on Lightroom Classic 12 exports of public NEFs (one shown in
portrait, one cropped with Constrain Crop): a forward homography on column vectors, normalised
to the stored image (y down, before the EXIF orientation), applied before the crop, with the
fill scale in it. LightCraft's render mapping with the kept matrix matches those exports to
0.11 to 0.54 px on average and under 1 px at worst; end-to-end renders match to 0.08 to 0.50 px.
PerspectiveUpright 2, 3 and 4 now read as Full, Level and Vertical (they were read as Level,
Vertical and Full), and a stated mode no longer keeps a transform solved for another one.
Guided, Upright versions other than 151388160 and unusable matrices are solved as before, with
the import warning. Upright Off no longer warns, and Lightroom's Upright bookkeeping fields are
no longer reported as unimported adjustments.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>