MX_ColorCorrect
The grade-everything node that replaces five separate steps
- image
- IMAGE
ColorCorrect is the workhorse of the MX pack: one node that bundles brightness, contrast, saturation, hue, gamma, and white-balance-ish temperature into a single pass. It's the node you reach for when a generation comes out oversaturated and contrasty - the default failure mode of most models - and you want to pull it back to something that looks photographed instead of rendered. If you've read the standard "color grading" advice for AI images - drop saturation 5–10%, add a subtle warm or cool cast - this is the node that advice is about.
It lives in Intersection98/ComfyUI-MX-post-processing-nodes, and it slots in right after your VAE decode. Everything here is realtime-ish and CPU-cheap; none of it touches the sampler, so you can re-run it freely while dialing in a look.
How it works
Under the hood it's a chain of classic image operations. Brightness and contrast use PIL's ImageEnhance. Temperature multiplies the red/green channels for positive values (warming) and the blue channel for negative values (cooling). Gamma is a simple power function, saturation happens in HLS color space, and hue is a rotation in HSV. The order matters - brightness and contrast first, then temperature, then gamma, saturation, hue - so the later stages operate on the already-adjusted image. It's not a filmic transform, but it's a genuinely useful approximation of the controls you'd find in a raw editor.
The inputs that matter
image- your IMAGE tensor, straight off the VAE decode.brightness,contrast,saturation- all default1.0, range 0–5. This is the core of a basic grade:saturationdown to ~0.9 andcontrastdown to ~0.95 fixes the "AI oversaturation" look in one go.temperature--1to1, default0. Positive warms, negative cools. Subtle values like ±0.05–0.1 are the sweet spot; past ±0.3 it starts to look graded rather than natural.hue-0–360degrees, a full color-wheel rotation. Mostly you'll leave it at 0 unless you're doing an intentional shift.gamma-0.2–2.2, default1.0. Below 1 brightens shadows, above 1 darkens them; it's the closest thing here to a proper tone adjustment.
The output is a single IMAGE with the same dimensions, ready to chain into a save node or the next effect. Every input is required, so the node always appears fully loaded - which is fine, because the defaults are sane (all the "strength" knobs sit at 1.0, meaning no-op until you touch them).
Install
Standard MX pack install: ComfyUI Manager (search MX or ComfyUI-MX-post-processing-nodes), or clone it into custom_nodes:
cd ComfyUI/custom_nodes
git clone https://github.com/Intersection98/ComfyUI_MX_post_processing-nodes
cd ComfyUI_MX_post_processing-nodes
pip install -r requirements.txt
Restart ComfyUI and you'll find it under postprocessing/Color Adjustments. No models to download, no keys.
Where people get burned
Because every control is a required input, it's easy to leave one at a non-default value by accident and not realize why your images all have a green tint. If your output looks wrong, check each slider against its default (all the 1.0 ones and temperature/hue at 0). One genuine quirk: the operations run in a fixed order with 8-bit intermediate steps, so cranking brightness to 5 and back can clip detail - push the overall exposure gently and split big changes across a second pass instead of one extreme. For most color work this is the one MX node you'll actually use daily.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| temperature | FLOAT | 0.00-1–1 | — |
| hue | FLOAT | 00–360 | — |
| brightness | FLOAT | 1.000–5 | — |
| contrast | FLOAT | 1.000–5 | — |
| saturation | FLOAT | 1.000–5 | — |
| gamma | FLOAT | 1.00.2–2.2 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |