乗算済みアルファを使用して作成された MakeScreen のグラフィックハンドルの内容は
『乗算済みアルファの画像』なので、SaveDrawValidGraphToPNG などで保存する場合は
保存する前に『通常アルファの画像』に変換する必要があります
具体的には DX_GRAPH_FILTER_INTERP_ALPHA を使用します
// 通常アルファの画像格納用のテンポラリ画像を作成
int TempScreen = MakeScreen( 画像の横幅, 画像の縦幅 );
// テンポラリ画像に乗算済みアルファの画像から通常アルファ画像に変換したものを格納
GraphFilterBlt( 乗算済みアルファの画像, TempScreen, DX_GRAPH_FILTER_INTERP_ALPHA );
// テンポラリ画像を保存
SaveDrawValidGraphToPNG( TempScreen, 0, 0, 画像の横幅, 画像の縦幅, "Save.png" );
// テンポラリ画像を削除
DeleteGraph( TempScreen );
又は
// 乗算済みアルファの画像を通常アルファ画像に変換
GraphFilterBlt( ScreenHandle, DX_GRAPH_FILTER_INTERP_ALPHA );
// 通常アルファの画像に変換した状態で保存
SaveDrawValidGraphToPNG( ScreenHandle, 0, 0, 画像の横幅, 画像の縦幅, "Save.png" );
// 通常アルファの画像を乗算済みアルファの画像に再変換( DX_GRAPH_FILTER_PREMUL_ALPHA を使用 )
GraphFilterBlt( ScreenHandle, DX_GRAPH_FILTER_PREMUL_ALPHA );
後者の方が3行で済んで若干お手軽感がありますが、乗算済みアルファ → 通常アルファ → 乗算済みアルファ
によって若干画像が劣化する他、処理負荷も前者より高いので、少し煩雑ですが前者の方がお勧めです
よろしければお試しください m(_ _)m