support polygons with holes in them:
render to a separate offscreen canvas, using Canvas composite operations ('destination-out')
to cut the holes out of the initial polygon, then copy back to the main canvas