It looks like the bug is actually in SPRect. It happens because of the
SPGroup::update() chains up to SPItem::update(), which in turns calls
the SPItem::bbox() virtual method to set the filter bounds. However,
SPShape uses this->_curve to compute the bounding box, and SPRect only
sets the curve when SPRect::update() is called. Consequently, calling
SPItem::bbox on an SPRect before it is updated returns an empty bbox.
To fix this, SPRect should either provide its own implementation of
the bbox method that does not use _curve, or (preferably) update the
curve in the set() method.