← Field notes

Making tiny curve adjustments behave like tiny edits

Chiado’s neutral-curve fix reduced a discontinuity from two or three output levels to at most one in the photographic probe.

Conor Livingston · October 2026

Reported photographic probe: the largest output-channel jump from an almost neutral curve fell from up to three 8-bit levels to at most one. A separate 343-color synthetic check failed before the fix and passed afterward.
Reported photographic probe: the largest output-channel jump from an almost neutral curve fell from up to three 8-bit levels to at most one. A separate 343-color synthetic check failed before the fix and passed afterward. Open full-size figure ↗

A tiny curve adjustment should produce a tiny change. In Chiado, an almost neutral curve could instead move an output channel by two or three levels in an eight-bit image. Exact identity curves and tiny nonzero curves took different conversion paths, creating a jump at the point where the control should feel most continuous.

The fix measures the changed conversion relative to the same neutral conversion and applies only that difference to the existing neutral result. A 343-color synthetic test failed before the fix and passed afterward; the photographic probe reduced the largest jump to one output level, with many pixels unchanged. The combination tests that exposed this issue also rejected broader changes that looked promising only on familiar photographs.

The fix: measure the curve relative to neutral

The interaction checks also led to a simpler question: does an almost invisible curve produce an almost invisible change?

Exact identity curves bypassed a color-space conversion. Tiny nonzero curves took the conversion path, including its lookup and rounding differences. On three photographs, an almost neutral curve could therefore move an output channel by two or three levels in an eight-bit image.

The fix measures the changed conversion relative to the same neutral conversion, then applies that difference to the existing neutral result. A synthetic test covering 343 colors, composite and individual channel curves, and negative, neutral and positive Dehaze failed before the fix and passed afterward. Repeating the photographic probe reduced the largest jump to one output level, with many pixels unchanged.

That fix is in Chiado’s app code and passed the engine, iPad simulator and shared Mac checks. It addresses continuity near a neutral curve. It does not solve the larger Dehaze/curve mismatch.

Predictable editing has two different requirements

Chiado renders the final recipe through a fixed sequence of operations. Moving Dehaze before moving the curve in the interface does not change that sequence. The same final settings should produce the same image regardless of the order of gestures.

But the operations inside the renderer can still interact. A curve changes the brightness and contrast that another operation receives. An operation that estimates something from the image may also need to estimate it from the appropriate stage. Consistent execution does not establish agreement with another editor.

Measure the combinations themselves

We exported 45 Lightroom references from three development photographs: an unedited baseline, then each individual edit, each pair and the triple, in two directions. The controls were Dehaze at −40 or +40, global grading, and a composite curve that lowered or raised the midpoint.

For two edits, a useful diagnostic is the combined result minus each individual result, plus the baseline. This asks how much of the combined response cannot be explained by simply adding the isolated changes. A nonzero residual is expected for nonlinear operations; it is not automatically a bug. The actual Lightroom combination remains the reference. Adding together two isolated Lightroom changes would invent a target that Lightroom never rendered.

Against the preserved renderer from before the curve change, curve-only response improved in five of six cases. Every Dehaze/curve pair and every triple regressed. Across the 18 combinations containing a curve, mean response error increased by 9.0%. The 18 edited cases without curves were unchanged, as were the three neutral images.

Here “error” is our diagnostic distance between editing responses, derived from reduced images and color summaries. It is not a rating of photographic quality, and a lower average does not guarantee that an edge, highlight or particular hue looks better.

An appealing fix failed on another group of photographs

We tested moving Dehaze after curves. That alone made the combinations worse. Updating the image-derived guide used by positive Dehaze as well improved all six affected positive combinations on the original three photographs, but the version applied to both signs still introduced negative-Dehaze regressions.

A narrower candidate changed only positive Dehaze when a curve was present. Its original control renders were pixel-identical, so it was a plausible next experiment. We then compared it with the current renderer using 48 references from six September photographs.

Of the twelve affected combinations, six improved and six regressed. Mean error across all 18 combinations containing curves rose by 2.01%; the 36 control renders remained identical. We rejected the candidate.

Those percentages compare different experiments: the first compares the curve implementation with its predecessor; the second compares an experimental Dehaze change with the current implementation. Neither identifies Adobe’s internal operation order. They describe what our own alternatives did on these photographs.

This is also why a calibration can overfit without having a large learned model. We can select an implementation because it happens to suit familiar scenes. The September checks stopped one such selection, but those inspected photographs are now development evidence, too. The October reserve remains unopened.

A closer starting image does not guarantee a closer response

A later check covered Exposure, Highlights and a composite curve: all 27 combinations of three settings for each control, on six development photographs. That produced 162 Lightroom references, including opposite-direction edits such as raising Exposure while lowering Highlights.

One candidate selected highlight tones using brightness before the Exposure adjustment. It lowered average total-response error in both groups of photographs, but 30 of the 72 affected combinations regressed. The worst regression nearly doubled the diagnostic error. We rejected the change despite its lower averages; all 90 cases that should be unaffected were pixel-identical, but that alone was not enough.

We also asked whether the different starting brightness was misleading the comparison. From a saved gray ramp, we measured a lightness mapping between Chiado and Lightroom, then applied that same mapping to both Chiado’s unedited and edited images. Average baseline lightness became closer on four of six photographs. Yet total-response error increased by about 22% in the original group and 15% in September, and every measured curve increment moved farther from its reference.

This was a diagnostic applied after rendering, not a replacement camera profile. It changed the distribution of brightness as well as the response being measured, so it cannot establish the cause of the mismatch or Adobe’s processing order. It does show why matching an unedited brightness statistic is not sufficient evidence for changing the renderer. A baseline match, an isolated slider match and a combined-edit match need their own checks.

What remains unproven

We still need combinations that transfer across scenes, scrutiny at native resolution, and an evaluation that has not already influenced the implementation. These photographic experiments use Hasselblad X2D II RAWs; they do not establish performance on other cameras.

The useful result of a failed combination test is a narrower, more accurate conclusion: a control can be closer in isolation while the editor remains unfinished as a system. Both results need to stay visible.

What this changes for Chiado

The implemented improvement is continuity near a neutral curve, backed by a before/after test and engine, iPad simulator and shared Mac checks. The wider Dehaze/curve interactions are a separate, unfinished problem. Keeping those outcomes separate lets us retain the small, verified fix without claiming that every combination is resolved.