As @enhzflep said, GDI can't handle alpha channel correctly so when working with 32 Bpp image you have to use GDI+ functionality like this:
#include <GdiPlus.h>
#pragma comment(lib,"gdiplus.lib")
//....
Gdiplus::Graphics graphics ( image.GetDC () );
Gdiplus::Font font ( &FontFamily ( L"Arial" ), 10 );
Gdiplus::SolidBrush brush ( Color ( 255, 0, 0, 0 ) );
graphics.DrawString ( L"Hello world", -1, &font, PointF(0.0f, 0.0f), &brush );
image.ReleaseDC()