QPainter::compositionModeを変更して、塗りつぶしでアルファ値を書き換えるのがお勧め
アルファ値が一様ならQPainter::CompositionMode_DestinationIn(Out)が使える
詳しくはリファレンスを読んで

画像が崩れる理由は分かんない
そっちを解決しないことにはこの方法も使えないかもしれないけど・・・