Your QPainterPath is not closed, so the outline is not complete, which more than likely explains the half-and-half colouring along the diameter. You need to call closeSubpath() as described here:
https://doc.qt.io/qt-5/qpainterpath.html#arcTo
I would guess that anti-aliasing combined with the coordinate system has something to do with the remaining asymmetry
You could try it without the anti-aliasing render hint.
There's quite a lot of detail here: https://doc.qt.io/qt-5/coordsys.html#rendering
You are drawing full semicircles, so you could also use QPainter::drawPie() to see if that result is more to your liking. (The restrictions on angles in this function suggest it is relying heavily on symmetry for speed.)
Bookmarks