Quick fix: Wake re-initializes the display chain; ICC color profile reverts to the OS default (sRGB). Re-apply via Color Management or use a PowerShell script triggered on wake event to restore the custom profile. Persistent fix: set the profile as system default in Color Management, not just device default.
You calibrated your monitor with a colorimeter, saving an ICC profile. Set as the device’s default in Color Management. Everything looks right. Sleep the PC, wake it — colors look slightly off, especially blues and reds shifted. The ICC profile is no longer active; Windows reverted to sRGB on wake.
Affects: Windows 11 with color-managed monitors.
Fix time: 10 minutes.
Why wake breaks color profiles
On wake, Windows’ display initialization sequence re-applies the saved color profile. If the profile is stored as “current user” default rather than “system” default, the wake sequence may run before user-context is fully loaded — the profile fails to apply and the OS uses sRGB. The user-side reapply doesn’t catch up automatically.
Method 1: Set the profile as system default
- Right-click the desktop → Display settings.
- Scroll down → Advanced display → Display adapter properties for Display X → Color Management tab.
- Click Color Management button. Devices tab.
- Check Use my settings for this device.
- Click Add…, browse to your ICC file, click Add.
- Select the profile and click Set as Default Profile.
- Click Advanced tab. Click Change system defaults.
- In the new dialog, check Use Windows display calibration off (if it’s on).
- On the Devices tab of the new dialog, repeat: add the ICC, set as default. This sets the profile at system level.
- OK out of all dialogs.
Method 2: Re-apply via PowerShell on wake event
- Create a script
C:\Scripts\reapply-color.ps1:
# Use DisplayCAL’s ICC profile loader or direct API call
(Implementation: load ICC via SetDeviceGammaRamp or call a calibration tool’s reload command. DisplayCAL has a reload utility called loader.) - Open Task Scheduler. Create a task triggered by System Event — Log: System; Source: Power-Troubleshooter; Event ID: 1 (resume from sleep).
- Action:
powershell.exe -ExecutionPolicy Bypass -File C:\Scripts\reapply-color.ps1. - Save. The script runs on every wake.
Method 3: Use DisplayCAL loader for automatic reload
- Install DisplayCAL (free, open source).
- It includes a loader utility that runs at logon and re-applies your ICC profile.
- Configure it to start with Windows and trigger on display change events.
- The loader handles wake events as part of its watchdog.
Verification
- Sleep, wake, check color. Custom profile is active (subtle color shift compared to sRGB).
- Open Color Management, current profile shows your ICC as active.
- Open a known-color image; compare to a sRGB-only display — differences are intentional.
If none of these work
If profile keeps reverting despite system default and wake script, a vendor color tool (NVIDIA, AMD, Intel) may be intercepting at the driver level. Check the GPU control panel for color profile overrides. For chronic reverts, use a hardware calibrator’s software (X-Rite, Datacolor) which manages the profile lifecycle independently.
Bottom line: ICC profiles need system-level binding, not just user-level. Set at both places via Color Management’s Advanced tab. DisplayCAL or a wake-trigger script handles edge cases.