... All updates of position are done in DoGetRectangle(). Ruler need only expose one function, DrawOverlays(). Don't redraw indicators twice when dragging (hiding and showing again), making some flicker. Just do one update.