You generate a 5-second clip of a person walking through a park. At second 1 the scene is warm afternoon light. By second 3 it’s cool blue twilight. By second 5 it’s warm again. The shot didn’t change locations and no character moved through different lighting — the model is re-guessing the color temperature frame by frame, and the result looks like a broken auto-white-balance.
Fastest fix: add an explicit Kelvin value plus a “no drift” instruction to your prompt (for example consistent color grading, fixed white balance 5500K daylight, no color shift), then apply one unifying LUT or run Shot Match in your editor so the whole clip lands on the same grade. The Kelvin pin alone removes most of the wobble; the post step kills whatever drift remains.
This is a known video-model failure mode. Unlike image models, which commit to one set of colors, video models update color information per frame, and small drifts compound. As of June 2026 it still shows up across Sora 2, Veo 3.1, Kling 3.0, and Runway Gen-4 — artifacts accumulate the longer the clip runs, so it is most visible in the back half of a long generation (roughly past 8-10 seconds, where the model has the most accumulated state to drift from).
Which bucket are you in?
| Symptom | Most likely cause | Go to |
|---|---|---|
Prompt has no K / no white balance word | No fixed white balance | Cause 1, Step 1 |
Several lighting words (sunset, golden, afternoon) | Ambiguous light description | Cause 2, Step 1 |
| 2+ light sources, none marked dominant | No dominant source | Cause 3, Step 2 |
| Prompt moves subject between rooms / outdoors | Multiple environments | Cause 4 |
Style name like Wong Kar-wai, dream sequence | Style evokes color shift | Cause 5, Step 3 |
| Short clips fine, long clips drift | Clip too long | Cause 6, Step 5 |
Common causes
Ordered by hit rate, highest first.
1. No fixed white balance specified
Without 5500K or similar, the model treats white balance as a free parameter and lets it drift. Each frame’s “best guess” lands slightly differently.
How to spot it: prompt has no K (Kelvin) value or explicit white balance instruction.
2. Light source description ambiguous or changing
warm afternoon light, glowing sunset, magic hour
These three terms imply slightly different color temperatures, so the model picks different ones for different frames.
How to spot it: multiple lighting words that imply different temperatures (afternoon, sunset, golden).
3. Multiple light sources without dominance
indoor lamp + window light + street light gives the model three color sources to pick from per frame, and it cannot decide.
How to spot it: prompt has 2+ light sources without specifying which is dominant.
4. Scene description implies multiple environments
woman walks from a sunlit garden into a shadowed hallway, then outside to a snowy field
You said the lighting changes; the model is correctly varying color. But if you wanted ONE consistent scene, this prompt over-commits.
How to spot it: prompt describes movement between environments. Pick one environment.
5. Style anchor evokes color-shift work
Wong Kar-wai style, In the Mood for Love, dream sequence, lynchian — all evoke color-shifting cinema, so the model honors the look.
How to spot it: style word evokes color experimentation.
6. Clip too long for color stability
Like character drift, color drifts more in longer clips, and the math is the same on every model: each frame is conditioned on the ones before it, so tiny per-frame errors compound. Native single-clip lengths (as of June 2026):
| Model | Native single-clip length | Notes |
|---|---|---|
| Veo 3.1 | up to 8s | extend in 7s increments to ~148s via API; drift compounds across extensions |
| Sora 2 | up to 15s (25s on ChatGPT Pro web) | longer takes wash out and drift more |
| Runway Gen-4 | up to ~20s | ”Temporal Anchor” reduces (not eliminates) drift vs Gen-3 |
| Kling 3.0 | runs long, but fidelity and color stability drop with length |
Even when a model lets you ask for 15-20s, the most color-stable region is the first 5-8 seconds. For a critical shot, generate short and stable, then extend or stitch.
How to spot it: short clips are stable, long clips drift.
Shortest path to fix
Step 1: Pin a specific Kelvin temperature
Add to the prompt:
consistent color grading, fixed white balance 5500K daylight
# Warmer
3200K tungsten warm throughout, consistent color, no shift
# Cooler
6500K cool daylight, locked white balance, consistent color
# Cinematic
locked color grading, neutral 5600K, no color drift, professional grade
This is the single most effective fix. Common references: 3200K tungsten/incandescent (warm), 4500K neutral indoor, 5500K to 5600K daylight, 6500K cool/overcast.
Step 2: One light source, named explicitly
# Before — ambiguous
warm afternoon glow
# After — explicit
single key light: window light from camera left at 4500K, no fill, consistent throughout
If you must have multiple, pick a dominant one and tie the rest to it:
dominant key light: window from camera left at 5500K; subtle ambient fill from room interior at lower intensity, same temperature
Step 3: Strip color-shift-evoking style words
Remove:
Wong Kar-wai, dream sequence, lynchian, surreal,
shifting colors, color play, magic hour transition,
dawn to dusk
Replace with stable language:
naturalistic color, stable grade, documentary style,
consistent palette, locked color
On Kling 3.0, push the same intent into the Negative Elements field (the dedicated negative-prompt box) rather than only the main prompt — it is one of the most reliable levers for suppressing drift:
color shift, white balance shift, lighting inconsistency,
tonal shift between frames, flicker, color temperature change
Step 4: Apply a unifying LUT in post
Even with the best prompts, expect some residual drift. Flatten it in post — one grade applied across the whole clip overrides per-frame wobble:
# DaVinci Resolve (free) — Color page
- Drag a LUT from the LUTs browser (top-left) onto the clip's node,
or right-click the node > LUTs > pick one (Film Looks, Kodak 2383, etc.)
- One grade applied across all frames overrides per-frame drift
# Premiere Pro — Lumetri Color panel
- Basic Correction > Input LUT, or Creative > Look, to apply a LUT
- Set matching black point and white point across the clip
# Final Cut Pro
- Add a Custom LUT effect, or use Modify > Balance Color (Option-Command-B)
to neutralize white balance first
Step 5: Generate shorter clips for color stability
Same logic as character drift — split a long shot into shorter segments, each color-stable, then stitch in your editor. Generating two 5s clips that hold color beats one 10s clip that wobbles.
1 x 10s drifty -> 2 x 5s stable -> stitch in editor
Step 6: Match color across clips in post
For multi-clip projects, lock every shot to one reference after generation:
# DaVinci Resolve 20 — Color page
- Select all clips in the thumbnail timeline
- Right-click the clip you want as the reference
> "Shot Match to this Clip" (uses the Neural Engine)
# Premiere Pro — Lumetri Color > Color Wheels & Match
- Click "Comparison View"
- Pick the reference shot on the left, the target on the right
- Click "Apply Match"
# Final Cut Pro
- Select the clip to adjust, then Modify > Match Color (Option-Command-M)
- Skim to the reference frame, click "Apply Match"
This locks color across an entire sequence after generation.
How to confirm it’s fixed
- Scrub the clip frame by frame (or step with the arrow keys) and watch a neutral surface — skin, a white wall, a gray road. It should hold the same tint start to finish.
- In DaVinci Resolve, open the Parade scope (Color page, Scopes panel) and play through: the red, green, and blue traces should stay roughly level instead of one channel rising and falling. In Premiere, use the Lumetri Scopes (RGB Parade).
- If you generated multiple takes, the most stable one is usually the shortest. Keep that and extend it rather than fighting a long drifty clip.
FAQ
What Kelvin value should I use? Match the look you want: 3200K for warm tungsten/indoor, 5500K-5600K for clean daylight, 6500K for cool/overcast. Whatever you pick, write it once and reuse the same value on every clip in the project so they cut together.
The prompt says 5500K but it still drifts. Why? The Kelvin pin reduces drift; it does not eliminate it on models that update color per frame. Pair it with a “no color shift / locked grade” phrase, shorten the clip to 5-8s, and finish with a LUT or Shot Match in post (Step 4 and Step 6).
Does this happen on every model? It is most common when there is no white-balance anchor in the prompt, and it gets worse with clip length. As of June 2026 it appears on Sora 2, Veo 3.1, Kling 3.0, and Runway Gen-4. Runway Gen-4’s “Temporal Anchor” and Kling 3.0’s negative-prompt field reduce it but do not eliminate it; longer clips on any model drift more simply because they run longer. Short, well-anchored prompts are stable on all of them.
Can I fix a clip I already generated without re-prompting? Yes. A single LUT applied across the whole clip, or Shot Match/Match Color against a stable reference frame, overrides per-frame drift without regenerating. That is often faster than rolling the dice on another generation.
Why does color drift worse in longer clips? Each frame’s color is conditioned on the previous frames, so tiny per-frame errors accumulate. Even on models that allow 15-20s natively (Sora 2, Runway Gen-4), the most color-stable region is the first 5-8 seconds; Veo 3.1 caps a single native take at 8s. Split long shots into shorter stable segments (Step 5).
Prevention
- Decide the overall palette (warm / cool / neutral) before generating and commit to one Kelvin value.
- Always mark ONE light source as dominant.
- Apply a unifying LUT to every clip in a project rather than grading each one ad hoc.
- For multi-clip projects, generate every clip at the same Kelvin spec so they match before you even reach the timeline.