Flux Tile ColorFix+Sharp Patcher
ColorFix plus an unsharp mask, tuned for Flux
- model
- ref_latent
- model
This is the "and give me my detail back" version of Flux Tile ColorFix Patcher. Same color transfer, same low-frequency swap, plus a sharpening pass. If you're upscaling from a soft source - a compressed JPEG, a low-res render, an old photo - the base patcher will fix the color drift but leave you with the mush. This one adds detail back at the same time.
The sharpening is a direct high-pass boost, i.e. an unsharp mask, applied to the already color-fixed latent:
high = fixed - blur(fixed, k)
result = fixed + sharpness * 0.1 * high
Extract the high frequencies, add a scaled amount back. Why "0.1"? The author calibrated it so that sharpness in the 0–2 range produces a comparable effect to the SD/SDXL sharp variant at typical CFG settings. Why not just use the SD variant's trick? Because that one sharpens by differential CFG processing - feeding a softened version down the uncond path and letting CFG amplify the gap. Flux runs at cfg_scale=1.0, so there's no gap to amplify. Direct sharpening is the only option that works.
The inputs that matter
Everything from the base patcher, plus one:
sharpness- 0.0 to 2.0, default 1.0. 0 = no sharpening (at which point you're just running the base patcher with extra steps), 1.0 = moderate detail boost, 2.0 = strong. Start at 1.0; oversharpening shows up fast as halos and ringing around high-contrast edges.
The rest are identical to the base node: model, ref_latent (VAE-encoded reference - use the Flux VAE), blur_k (frequency split, default 8), weight (0–1 color fix strength), and blur_mode (default gaussian, box for exact A1111 behavior). Output is the single patched model for your KSampler.
Install
Pure Python, no requirements.txt, no models:
cd ComfyUI/custom_nodes
git clone https://github.com/ihorpankin/comfyui-colorfix-v3.git
Restart ComfyUI; it's under colorfix-v3/flux. ComfyUI Manager: search "comfyui-colorfix-v3".
Where people get burned
The usual suspects, plus one unique to this node. First, the VAE: wrong VAE in, wrong colors out. Second, don't mistake sharpness for a free lunch - it amplifies whatever detail is there, including compression artifacts and noise, so noisy sources need a low setting or a clean-up pass first. And third, if you're getting color artifacts but don't need detail work, save the VRAM and use the base patcher; the sharp pass costs a second blur on every step and buys you nothing if the source is already crisp.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| ref_latent | LATENT | VAE-encoded control/reference image. Connect from VAE Encode node. This provides the color palette to transfer. Use the Flux VAE for encoding. | |
| blur_k | INT | 83–32 | Blur kernel radius. Controls frequency split point. Larger = more aggressive color transfer. |
| weight | FLOAT | 1.000–1 | Color fix strength. 0.0 = no correction, 1.0 = full color replacement. |
| sharpness | FLOAT | 1.000–2 | Detail enhancement strength. Uses direct high-pass boost (unsharp mask). 0.0 = no sharpening, 1.0 = moderate detail boost, 2.0 = strong sharpening. |
| blur_mode | COMBO | gaussian (smoother) | Blur algorithm for frequency split. Gaussian = smoother falloff, recommended for Flux. Box = sharp cutoff, A1111 original. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |