surface: fix always invalidating on reflow