This patch is a replacement for gtk-fortier-980128-0 which was broken. There are a couple of optimizations: Currently, all the 3 of viewport windows can recieve events. Now the clipping window (view_window) can not get event anymore, and the window which contains the child widget can only recieve expose events (it needs to send these events to the child widget under some special conditions). The second optimization (where my previous patch was totally broken :)), is about the expose events sent to the child widget. Now we test if the expose event is recieved by the bin_window before sending it. The result is that we avoid a duplicate expose event (one event was sent by the widget->window, and one by viewport->bin_window). Maybe this problem happens elsewhere (I looked at a couple of other widgets but I'm not a gtk expert). The patch is against 0.99.3 Patrice, hoping that this patch is now correct :)