fix: repaint recursion