Loading a scan
Drag a file onto the canvas or use Open Wedge. Supported: PNG, JPEG, TIFF, GIF, BMP, HEIC/HEIF, and Apple-supported RAW — DNG, NEF, CR2/CR3, ARW, ORF, RAF, RW2. RAW files are decoded with sharpening off, so what you measure is the sensor’s tonality rather than an interpretation of it. Very large scans are capped in resolution for processing; the measurement geometry is expressed in that capped pixel space throughout.
Dropping a .wdge file restores that whole session instead.
Scanning matters more than anything the app can do afterwards: scan RAW with a straight curve, turn off auto-exposure, auto-levels and sharpening, and keep the settings identical between sessions — Scanning a Print for Measurement has the whole setup. All readings are relative — normalized to the lightest and darkest patch measured — so consistency beats absolute accuracy.
Orientation
The two rotate buttons turn the working image in 90° steps. The quad, every measured point, the per-cell offsets and the step-0 corner are remapped through the same rotation, and the rotation is stored in the session. The file on disk is never rewritten.
Detection
Detection lives in the inspector’s Measurement section, next to the pickers it reads and writes — there is no toolbar copy, because reaching one before setting the layout was the easiest mistake to make. Two buttons run the same CoreML-backed pass and differ only in how much of it they adopt.
Detect Corners and Steps adopts all of it:
- the step count — 5 to 256, from the supported vocabulary
- the grid — columns × rows
- the cell-order axis — column-major or row-major
- the step-0 corner — which corner of the quad the sequence starts from
- the wedge quad — the four corners of the printed wedge in the scan
It then samples every cell and fills the table, the graph and the
statistics. The canvas badge changes to ⚠ auto-detected, and the
inspector’s Status pill reads DETECTED · 51 PTS.
Detect Corners, the button above it, takes only the outline and keeps your Cols / Rows / Steps, re-deriving the cell centres from the newly-found quad. It leads the section because most of the time you are holding a wedge whose layout you already know: set Cols, Rows and Steps, then detect, and the classifier never gets to overrule you. If what it read disagrees with what you set, a note under the button block says so rather than silently choosing for you.
If detection fails outright, an alert offers Place corners manually, which seeds a quad you can then drag into place.
Checking and correcting the placement
Click the ⧉ button in the zoom chip to frame the wedge, then look at the circles.

- Corner handles — drag any of the four to match a skewed or keystoned scan. Cell centres re-interpolate across the quad as you drag, so the whole grid follows.
- Per-cell nudges — drag a single circle off a dust speck, a coating streak, or a fingerprint. The nudge is stored as an offset from the interpolated position, so it survives later corner adjustments.
- ⌘ + click writes the value under the cursor into the currently selected step and advances the selection, which is the fastest way to re-read a handful of patches by hand.
- Radius in the inspector sets how big a disc is averaged at each point (5–40 px). Bigger averages out grain; too big overlaps the neighbouring patch.
The badge under the canvas tracks provenance: · untouched, ⚠ auto-detected, or ✓ manually adjusted once you have moved anything.
Manual placement
Shift + ⌘ + drag a rectangle over the wedge to lay out the full
cols × rows grid inside it. Two details make this quicker than it sounds:
- The corner you start the drag from becomes the step-0 corner, and it is copied into the toolbar’s corner picker. “Drag from where you want 0 % to be” is the whole rule.
- Drags shorter than a few points are treated as accidental clicks and ignored.
The 51-point wizard
For the common 17 × 3, 51-step wedge, Display → Fill and adjust measure
points → 51 points 3x17 (wizard) asks for two clicks — the 0 % patch, then
the 100 % patch — and fills everything between. A banner across the top of
the canvas prompts for each click; Cancel or Esc leaves the wizard.
Grid and cell order
The three pickers are independent:
| Picker | Values |
|---|---|
| Steps | 5, 10, 11, 12, 14, 21, 31, 37, 41, 51, 101, 129, 256 |
| Cols | 1, 7, 8, 11, 13, 17, 21, 31, 41, 51 |
| Rows | 1, 2, 3, 7, 8, 10 |
Changing one never silently rewrites the others; the single rule enforced is
cols × rows ≥ steps, so setting a step count that no longer fits bumps the
other axis. Choosing a step count also offers its canonical layout —
11 → 11×1, 21 → 7×3, 31 → 31×1, 41 → 41×1, 51 → 17×3, 129 → 43×3 — which
covers the common Stouffer strips.
Cell order is two independent choices, both in the toolbar:
- Axis —
↕advances the step number down a column before moving to the next column;↔advances along a row first. - Step-0 corner —
↖ ↗ ↙ ↘pick which physical corner the sequence starts from.
Between them they describe any wedge orientation, including a strip scanned upside down. Changing either re-derives the cell centres and clears per-cell nudges, because those nudges belonged to the previous numbering.
Noise, smoothing and display
Two different things are often confused here, so they are worth separating.
Blur and Edge (inspector → Image) change what is drawn and what is sampled from the canvas: Blur is a Metal-accelerated pre-blur that suppresses scanner grain, Edge is a Laplacian pass that makes patch boundaries obvious while you are placing the grid. The Display picker switches the canvas between Processed (blurred), Raw (the scan as scanned), and Edges (the edge map). Reports and exported profiles always use the unprocessed scan, whatever these are set to.

Mode and Smoothing (inspector → Processing) work on the series of 51 numbers, not on pixels:
| Mode | Behaviour |
|---|---|
| Gaussian | Weighted average across the series; Smoothing is the sigma |
| Median | Median over a window; Smoothing is the half-window |
| Savitzky-Golay | Polynomial fit over a window, which preserves the shape of the curve better than a plain average; Smoothing is the half-window |
After smoothing, the series is rescaled so the lightest reading is 1.0 and the darkest is 0.0 — this is the NORM column, and everything downstream (Δ, γ, σ, the correction curve) is computed from it. A setting of 0 leaves the readings untouched.
Reading the result
- The Δ column in the step table is the quickest check: green within ±0.015, red beyond ±0.04.
- σ (residual) in the statistics panel is the same information as one number.
- The shaded band on the response graph between Raw and Target is that error drawn as an area — the wider it is, the more work the correction curve is doing.
- A step whose tone tiles differ obviously from its neighbours’ usually means a measurement circle landed on a defect, not that the print misbehaved.
Step Detail window
Detail panel… above the step table (or the Window menu) opens a selectable text dump of every step — step percentage, source value, normalized value, normalized value within the step, and error — for pasting into a notebook or spreadsheet.
