In case you're wondering, the relevant code for the shadow clipping is here: http://bazaar.launchpad.net/~smspillaz/compiz-core/trunk/view/head:/plugins/decor/src/decor.cpp#L77 What that does is for panels at least, recalculates every time a window changes geometry, what should be "overlapping" the panel shadow and then creates a region (eg nonrectangular space) of where the panel shadow should be drawn so as /not/ to overlap those windows. Then on ::glDraw it clips the drawing of the panel shadow to that space. However, this only takes into account the window position on the assumption that *every window is exactly rectangular and not transformed*. Which is obviously not the case considering that the decorations have rounded corners. Its probably possible to re-use some of the code from blur here: http://bazaar.launchpad.net/~smspillaz/compiz-core/trunk/view/head:/plugins/blur/src/blur.cpp#L1215, which is what blur uses to get the *exact nonrectangular clipping area* for the blur underneath the window. Unfortunately that code is largely undocumented and I haven't been able to make it work for this case. Maybe a mathematical genius can figure it out :) On Wed, Jun 8, 2011 at 3:31 PM, Sam Spilsbury