Perhaps I can be of some assistance.
I guess its either that or I would have to sort the polygons so they draw left to right. I'm sure there must be a better way to do this.
Well, sorting the polygons may prove troublesome, as you'll want to sort them back-to-front as well.
I think subpixel correctness could really help this out, the problem with the bleeding in the HAM mode is somewhat related to the routing of the lines... oh, I'm lost...
Well, subpixel correct rendering is not required for bug-free polygons. Conversely... if your rendering is not bug-free without subpixel correction, it might improve somewhat, but I don't think it will become 100% bug-free.
The key to bugfree polygons is to have a strict rasterizing order. The most common is to render left-to-right and top-to-bottom.
When you render in that order, you will generally choose to render the first pixel of an edge/polygon on the left, and on the top, but not the last pixel of the polygon on the right and on the bottom.
Namely, if the endpoint is shared by two edges/polygons, then the second edge/polygon will draw the pixels that you skipped for the first one. Because the last pixel of the first polygon is now the first pixel of the second polygon. Hence it is rendered exactly once.
You could choose any rasterizing order, as long as you are consistent with all edges in all polygons.
I briefly cover this in my blogs, also pointing out that ordering your edges is reasonably simple when you go with strictly clockwise or strictly counter-clockwise order. The polygon can be seen as a circular linked list, which you can just rotate around until you have the top vertex first. Then moving from begin-to-end in the list gives you one side of the polygon top-down, and moving from end-to-begin in the list gives you the other side top-down.
I hope that makes some sense.