きれいに塗り潰すためには、たぶん (1) 塗り潰し範囲をアルファチャンネルで表現する (2) アルファチャンネルに従って、塗り潰し色で塗り潰す という手法が必要になると思うのだけれど。 (1)については gpaint 命令では「塗り潰し色と同値か」で判定してるのを、 RGBなりHSVなりの色空間内での距離を計算し、 「閾値以下なら塗り潰し範囲とする、 ただし距離に応じてアルファチャンネルの値を加減する」 みたいな処理が必要 (2) はアルファチャンネルができちゃえば簡単だよね。