The "Microsoft namespace" strikes again

I hate it when I write trivial code like this:

namespace rs
{

    enum TranslucencyType
    {
        OPAQUE,
        NORMAL,
        ADDITIVE,
        ...
    };

} // end namespace rs

...

switch( translucencyType )
{
    case OPAQUE:
        ...
        break;
    case NORMAL:
        ...
        break;
    case ADDITIVE:
        ...
        break;
    ...
}

and get a confusing error. In this case the error was:

"error C2196: case value '2' already used"

Why you ask? Because wingdi.h is nice enough to #define OPAQUE to 2 (in this case, I was lucky it was such a low value), basically stealing yet another common name from the global namespace (or Microsoft namespace as I've taken to calling it). I know it's a C API, but it doesn't make it any less annoying. I hate it every time I have to work around this problem, whether it's defining NOMINMAX, undefing things, or worse; coming up with less than optimal names for things. Thank you Win32 API.