I can confirm that this order of passes fixed my issue completely, much appreciated. When I implemented your solution the overlay geometry was not rendered, in case anyone else uses this thread in the future that can be fixed by including:
overP = vtk.vtkOverlayPass()
collection.AddItem(overP)