Причиной может быть формат растрового пикселя. Вы указываете это явно в конструкторе Bitmap?
Gdiplus::Bitmap bmp(WIDTH, HEIGHT, PixelFormat24bppRGB);
Попробуйте убедиться, что все используемые вами форматы пикселей одинаковы.
Другой причиной могут быть различия в Gdiplus::Graphics
режимах интерполяции в вашем коде. Этот атрибут определяет, как изменяются размеры изображений, как рисуются линии и т. Д.
m_pViewPortImage = new Gdiplus::Bitmap(
observedWidth,
observedHeight,
PixelFormat24bppRGB
);
Gdiplus::Graphics gr(m_pViewPortImage);
gr.SetInterpolationMode(Gdiplus::InterpolationModeHighQualityBicubic);