I have come across this problem beforeand there is no obvious solution to implement overlays with GraphicsView. One would think drawForeground() is the place to do it, but as it works in scene coordinates it is not so convienient. The general problem is to tell the viewport which areas to update while panning. See this thread.