Nodes/ComfyUI-Flux2Klein-Conditioning-Toolkit/FLUX.2 Klein Reference Appearance Balancer
ComfyUI Node

FLUX.2 Klein Reference Appearance Balancer

Klein keeps the structure but washes out the colors? This is your fix.

By xmarre·Created 6 months ago·Updated 5 months ago· 10
FLUX.2 Klein Reference Appearance Balancer
  • conditioning
  • CONDITIONING
appearance_scale1.00
detail_scale1.00
blur_radius2
channel_mask_start0
channel_mask_end128
target_reference_index-1
debugfalse

Every Klein editor hits this eventually. The model preserves the layout of your source image beautifully - same composition, same structure - but the color and illumination feel drained, like the image was ironed. People reach for text contrast, or crank the whole reference latent up, and both are the wrong tool. The FLUX.2 Klein Reference Appearance Balancer is the targeted fix.

Here's the insight that makes it work: a raw reference latent isn't doing one job. It's carrying two things at once - coarse appearance (big color fields, lighting, illumination) and local structural lock (edges, fine detail). When you only have a whole-latent knob, loosening the edit path throws both away together, which is why your edit can stay structurally obedient while the chroma washes out. This node separates the two and lets you scale them independently.

How it works

The node splits the reference latent into a low-frequency part and a high-frequency residual using a gaussian blur:

  • blur the latent → that's the appearance (coarse color/light) signal
  • subtract the blur from the original → that's the detail (structural lock) signal

Then it applies appearance_scale to the blurred part and detail_scale to the residual, and recombines. blur_radius (1–32, default 2) controls how aggressively the latent is split - a bigger radius means "appearance" absorbs more.

So the fix for washed-out edit colors is exactly what you'd expect: keep more of the low-frequency appearance signal, loosen the detail lock.

The README's practical starting point:

  • appearance_scale = 1.15 to 1.35
  • detail_scale = 0.85 to 1.00
  • blur_radius = 2 to 4

Crank appearance, ease off detail, and the source's broad color comes back while Klein stops fighting you on texture. That's a far more surgical move than globally scaling the reference or pushing text contrast until things go mushy.

Inputs that matter

  • appearance_scale / detail_scale - the two dials; both 0–3, both default 1 (which makes the node a no-op).
  • blur_radius - the split point.
  • channel_mask_start / channel_mask_end - restrict the rebalancing to a slice of latent channels, if you only want to touch specific ones.
  • target_reference_index - -1 for all references, or a specific one. Multi-reference edits get this for free, same as the Mixer.

Output is a CONDITIONING with the modified reference latents, wired back into the sampler path.

Where it sits in a workflow

Like the other reference nodes in this pack, it has to come after whatever node injects the reference latents into your conditioning, and before the sampler. It's a natural pairing with the Reference Latent Mixer: use the mixer's lowpass_reference mode when you want to relax the detail lock without necessarily boosting appearance, and use this balancer when you want to actively restore the washed-out color. Both read and write the same reference_latents metadata, so you can chain them.

Install

Same pack, same drill. ComfyUI Manager search "Flux2Klein", or:

cd ComfyUI/custom_nodes
git clone https://github.com/xmarre/ComfyUI-Flux2Klein-Conditioning-Toolkit

Restart. No model downloads, no dependencies beyond torch - this is pure tensor math on small latents.

Two honest caveats. First, like the Mixer, it only does anything if your conditioning actually carries reference_latents metadata - no reference path, no effect. Second, this is a content knob on the reference stream, not a color-grading tool: it restores what the source latent already contained, so it can't invent chroma that was never there. For gross color drift on a specific edit, pairing this with a histogram-match pass in the prompt ("keep the color tone and lighting of the original") is what the community lands on. This node is the part that actually has a slider.

Categoryconditioning/flux2klein

Inputs (8)

NameTypeDefaultDescription
conditioningCONDITIONING
appearance_scaleFLOAT1.000–3
detail_scaleFLOAT1.000–3
blur_radiusoptINT21–32
channel_mask_startoptINT00–4096
channel_mask_endoptINT1280–4096
target_reference_indexoptINT-1-1–64
debugoptBOOLEANfalse

Outputs (1)

NameTypeDescription
CONDITIONINGCONDITIONING