たしか、Graphics.draw(Shape shape)の動作って、

Shapeに対して一回り大きいShapeが作られて
そこから元のShapeを取り除いた領域に対してfillが行われる

っていう感じだったと思った。
ので実行結果的にはそれで正常。