Have you considered adding the watermark view as a child of the primary main frame's RenderWidgetHostView's native view? You can use
DidFinishNavigation to track when a new navigation commits in the
primary main frame, then access the newly committed primary main frame's RenderWidgetHostView
here. The watermark view can be a child of the RWHV's
native view directly. This will tie the watermark directly to the web page's view in the tree so it will draw exactly when the browser swaps the committed Document.