- if (pizza->m_is_scrollable)
- ; // invalidate does not seem to be needed in this case
- else
- gdk_window_invalidate_rect(pizza->m_backing_window, NULL, false);
+ // old and new border areas need to be invalidated,
+ // otherwise they will not be erased/redrawn properly
+ const GtkAllocation& a1 = widget->allocation;
+ const GtkAllocation& a2 = *alloc;
+ GdkRectangle r1 = { a1.x, a1.y, a1.width, a1.height };
+ GdkRectangle r2 = { a2.x, a2.y, a2.width, a2.height };
+ gdk_window_invalidate_rect(widget->parent->window, &r1, false);
+ gdk_window_invalidate_rect(widget->parent->window, &r2, false);