Yes, indeed, the main problem seems to be with the dwFlags value of the DDS_PIXELFORMAT structure. I also noticed the remarks in the MSDN documentation about both dwFlags and dwCaps from the DDS_HEADER structure, saying "when you read a .dds file, you should not rely on the [...] flags being set because some writers of such a file might not set these flags". I suppose, for a similar reason, one could follow a more lenient approach with readers for the dwFlags in the DDS_PIXELFORMAT structure, and, when loading DDS files, also accept files that have dwFourCC set to an expected value (such as, DXT1, DXT3, DXT5 or DX10).