code: def monkeypatch_reportlab():
      
      from reportlab.pdfgen.canvas import Canvas
      from reportlab.graphics import shapes
  
      original_renderPath = shapes._renderPath
      def patchedRenderPath(path, drawFuncs, **kwargs):
          # Patched method to transfer fillRule from Path to PDFPathObject
          # Get back from bound method to instance
          try:
              drawFuncs[0].__self__.fillMode = path._fillRule
          except AttributeError:
              pass
          return original_renderPath(path, drawFuncs, **kwargs)
      shapes._renderPath = patchedRenderPath
  
      original_drawPath = Canvas.drawPath
      def patchedDrawPath(self, path, **kwargs):
          current = self._fillMode
          if hasattr(path, 'fillMode'):
              self._fillMode = path.fillMode
          else:
              self._fillMode = FILL_NON_ZERO
          original_drawPath(self, path, **kwargs)
          self._fillMode = current
      Canvas.drawPath = patchedDrawPath
docs: https://bitbucket.org/rptlab/reportlab/issues/95/
      ReportLab always use 'Even-Odd' filling mode for paths, this patch forces
      RL to honor the path fill rule mode (possibly 'Non-Zero Winding') instead.