AI Image: Conflicting Lighting Directions (Fix)

Subject lit from the left, sun on the right, shadows pointing nowhere consistent. Pin one key light by direction, quality, source, and color temperature.

The subject’s face is lit from the left, but the sun in the background is clearly on the right. The shadow under the chin points one way; the shadow on the wall points another. Your brain reads “wrong” before you can name it, because humans are unusually sensitive to lighting consistency.

Fastest fix: delete every lighting and time-of-day word from your prompt, then write exactly one key light as direction + quality + source + color temperature (for example soft key light from camera left, window source, 5600K daylight). One direction, one source. That single change resolves most cases. The rest of this page covers why it happens and the heavier tools (negative prompts, LoRA weight, ControlNet, relighting, inpaint) for when the prompt alone is not enough.

Which bucket are you in

Run this quick triage before changing anything; it tells you which fix below to jump to.

SymptomMost likely causeGo to
Prompt names two or more directions (left and right, behind and front)Multiple light directionsStep 1
Prompt has two or more time/weather words (golden hour + overcast + neon)Conflicting time-of-day cuesStep 2
Turning the style LoRA off makes lighting consistentLoRA bakes in fixed lightingStep 3
Removing the reference image (img2img / IP-Adapter / --cref / --oref) fixes itReference lighting fights the promptStep 5 / Step 6
Prompt names several environments but no explicit lightModel invents sources to fit every environmentStep 1
Image is 90% right, one zone is wrongLocal error onlyStep 7

Common causes

Ordered by hit rate, highest first.

1. Multiple light directions in the same prompt

"portrait lit from the left, golden hour sun behind subject, dramatic side light from right, studio softbox key light"

You have just told the model light comes from four directions. It cannot satisfy all four, so it averages them, and the result has light from everywhere.

How to spot it: scan the prompt for left, right, behind, front, top, bottom near any light word. More than one direction means a conflict.

2. Conflicting time-of-day or weather cues

"golden hour, overcast, dramatic sunlight, soft diffused, night neon"

Each of these implies a direction and a quality. Golden hour is warm and low-angle; overcast is soft with no direction; night neon is colored point sources. Mixing them confuses the model.

How to spot it: look for more than one time/weather word. Pick one.

3. A style LoRA bakes in lighting that fights your prompt

Many style LoRAs (anime, “cinematic,” fashion-editorial) are trained on images with consistent lighting. The LoRA imposes its trained lighting while your prompt pulls elsewhere, producing a half-LoRA, half-prompt result.

How to spot it: the same prompt with the LoRA off looks consistent; with the LoRA on it conflicts. The LoRA is the source.

4. No light source described at all

When you describe no lighting, the model picks one. If the prompt hints at several environments (cinematic portrait at home, sunset outside the window, lamp on desk), the model invents conflicting sources to “make sense” of all of them.

How to spot it: the prompt has no explicit light direction or quality, but mentions multiple environment elements.

5. A reference image disagrees with the prompt

img2img, IP-Adapter, or a character/style reference whose lighting differs from your text. The model partially honors both and conflicts. Note one change since this article was first written: on Midjourney, --cref works only on V6 and Niji V6; V7 ignores --cref and uses --oref (Omni Reference) instead, weighted with --ow (range 0 to 1000, default 100). A high --ow forces the reference’s baked-in lighting even when your text asks for something different.

How to spot it: drop the reference and regenerate text-only. If the lighting becomes coherent, the reference is the problem.

Shortest path to fix

Step 1: Pin ONE key light using cinematography vocabulary

Replace adjective-soup with a precise spec: direction + quality + source + temperature.

Bad (adjective soup)Good (cinematography spec)
golden hour, dramatic, side lit, cinematicrim light from camera left, low-angle golden hour sun (5pm), warm 3200K, soft shadow falloff
studio portrait, beautiful lightingsingle softbox key light at 45 degrees camera right, fill card on left at -1 stop, no rim
moody, cinematic, dramaticsingle hard light from camera left, motivated by window, deep shadow on shadow side, 5600K daylight

Vocabulary to draw from:

  • Direction: from camera left, from camera right, from above, from behind, front-lit
  • Quality: hard light, soft diffused, dappled, direct sunlight, bounced fill
  • Source: golden hour sun, window light, softbox, practical lamp, neon signs
  • Temperature: 3200K tungsten warm, 5600K daylight neutral, 2200K candle warm

In Midjourney V7 and other natural-language models, write it as one short photography brief sentence rather than a comma list, e.g. Rembrandt key light from camera left, single window source, warm late-afternoon tone — the parser handles a sentence better than competing tags.

Step 2: Pick one time of day, then commit

Do not write golden hour overcast neon dawn. Pick one and let it set both direction and quality:

  • golden hour is warm, low-angle, directional
  • overcast is soft, no direction, cool
  • midday sun is hard, top, neutral
  • night urban neon is multiple cool point sources
  • studio is controlled; then choose softbox or hard

Step 3: Reduce LoRA / style weight when it conflicts

If a style LoRA bakes in fixed lighting, lower its weight:

# A1111 / Forge syntax
<lora:my_style:0.5>   # was 0.9 - drop to 0.5

# ComfyUI
LoRA loader -> strength 0.5

A weight of 0.4 to 0.6 usually keeps the style flavor without overriding lighting. If you still need the full style strength, keep the weight high and instead lock direction with ControlNet (Step 6).

Step 4: Negative-prompt the conflict (SD-family only)

Negative prompts help on the SD/SDXL/Flux family. They do nothing on Midjourney or DALL-E, so skip this step there and rely on Steps 1 to 2.

conflicting lighting, mixed shadows, multiple light sources,
inconsistent shadow direction, multiple sun positions,
contradictory lighting, ambiguous light source

Keep negatives narrow. Do not blanket-exclude shadows if you actually want dramatic shadows, or you will flatten the image. If a term does not visibly help on a controlled rerun (same seed), cut it.

Step 5: Lower the reference image’s influence

If a reference image is forcing its own lighting:

  • img2img: raise denoising strength so the model leans on your text, typically 0.6 to 0.75.
  • IP-Adapter: lower the IP-Adapter weight to roughly 0.4 to 0.6, or switch to a “style only” / “composition only” mode so it stops transferring the reference’s light.
  • Midjourney V7: lower --ow (try --ow 40 to --ow 60); V6 / Niji users lower --cw on --cref.

Step 6: Use ControlNet Depth/Normal to enforce shadow direction

For high-control work, feed ControlNet a depth or normal map that already has the lighting setup you want:

# ComfyUI
- ControlNet Depth or Normal-from-image (MiDaS / Marigold preprocessor)
- Provide a 3D render or sample photo with the lighting you want
- ControlNet strength: 0.5 to 0.7

A normal map carries surface orientation, so the model knows which way each surface faces and shades it consistently. Nodes such as “Normal Map Lighting” expose light_yaw and light_pitch (the light’s horizontal and vertical angle) if you want to dial the direction precisely instead of copying it from a sample.

Step 7: Relight after the fact with IC-Light, or inpaint the bad zone

If the composition is good but the light is wrong, you do not have to reroll. Two options:

  • Relight the whole image with IC-Light (“Imposing Consistent Light”), available as a ComfyUI / Forge extension. It takes your existing image plus a single specified light direction and re-renders coherent, consistent lighting and shadows across the frame. Use the foreground-conditioned model (iclight_sd15_fc) for “just relight my subject,” or the background-conditioned model (iclight_sd15_fbc) to match the subject to a new background. Note: the newer IC-Light V2 is non-commercial / research-only as of June 2026, so for commercial work use the original IC-Light release.
  • Inpaint one zone when 90% of the image is fine and only one area (e.g. a wall shadow pointing the wrong way) is wrong:
    • Mask the offending zone
    • Inpaint with a prompt that explicitly states the correct direction
    • Denoise 0.5 to 0.7 to preserve surrounding context

How to confirm it’s fixed

Before you ship, check these three things, ideally on the same seed so only your edit varies:

  1. Single shadow side. Pick the main subject and the nearest object; their shadows should fall on the same side and at a similar angle.
  2. Catchlights agree. In eyes, glasses, or any glossy surface, the bright reflection should sit on the side your key light comes from, in one consistent spot.
  3. Background matches subject. If the sun or window is visible, the subject’s bright side should face it, not away from it.

If all three hold, the lighting is coherent. If one fails, jump back to the matching cause above.

Prevention

  • Describe one key light first; add fill or rim words only after.
  • Use cinematography vocabulary (rim light from camera left, 5600K) instead of adjectives (dramatic lighting).
  • Keep a saved “lighting preset” snippet to paste for common moods (golden hour, overcast, studio softbox, night neon).
  • With a style LoRA, test its default lighting first and write your prompt to match it rather than fight it.

FAQ

Why does the AI ignore my lighting prompt entirely? Usually a stronger signal is overriding it: a style LoRA at high weight, a reference image with its own light, or two contradicting light words that cancel out. Strip the prompt to one light direction (Step 1) and, if a LoRA or reference is present, lower its weight (Step 3 / Step 5) before adding any lighting words back.

Do negative prompts fix conflicting lighting? They help only on Stable Diffusion / SDXL / Flux, and only as a secondary control. Fixing the positive prompt (one key light) does most of the work; negatives like conflicting lighting, mixed shadows clean up the rest. Negative prompts have no effect on Midjourney or DALL-E.

Does --cref still control character lighting in Midjourney? Only on V6 and Niji V6. As of June 2026, Midjourney V7 ignores --cref and uses --oref (Omni Reference) with the --ow weight (0 to 1000, default 100). If your character’s lighting always matches the reference and never your prompt, lower --ow.

How do I fix lighting without regenerating the whole image? Use IC-Light to relight the existing render with one chosen direction (Step 7), or inpaint just the wrong zone at denoise 0.5 to 0.7. Both keep your composition and only change the light.

What color temperature should I specify? Match the source: roughly 3200K for indoor tungsten, 5600K for daylight or a clear-sky window, 2200K for candle or warm practical lamps, and warm 3000K to 4000K for golden hour. Naming one temperature stops the model from blending warm and cool sources into a muddy mix.

Tags: #Image generation #Debug #Troubleshooting