You need to swap channels B and R when moving bits. IIRC DirectX uses BGRA color, while XNA uses RGBA. Therefore, if we change the sample code above to read
Color color = new Color(155, 72, 98, 255);
uint packedColor = color.PackedValue;
Color unpackedColor = new Color();
unpackedColor.R = (byte)(packedColor);
unpackedColor.G = (byte)(packedColor >> 8);
unpackedColor.B = (byte)(packedColor >> 16);
unpackedColor.A = (byte)(packedColor >> 24);
you will get the correct color value back from it
source
share