 <p>Your PNG is very likely 32-bit color. In your <code>ImageList_Create()</code> calls, use the flags <code>ILC_COLOR32 | ILC_MASK</code>, not <code>ILC_MASK</code> only.</p> <p>According to <a href="https://msdn.microsoft.com/en-us/library/windows/desktop/bb775232%28v=vs.85%29.aspx" rel="nofollow">MSDN</a>, if you don't specify one of the <code>ILC_COLORxxx</code> flags, it defaults to <code>ILC_COLOR4</code>, which is 4-bit 16 color graphics. This explains your reduced image quality. Explicitly specifying <code>ILC_COLOR32</code> will give you the full-color icons you want.</p>