Note that this is an additional commit on top of !121 (merged)
(As a matter of fact this was the bug I was trying to fix but I figured those cleanups could be useful on their own)
As described in the commit message, this should fix issue #54 which is due to floating point rounding errors when forcing the focus point of the gradient to be within the radius specified. If we end up even slightly outside the circle, cairo does not render the gradient correctly. To fix it we subtract the cairo tolerance from the calculated radius. Unfortunately this means the tolerance is subtracted even if the calculated coordinate is well within the radius... maybe we can get more fancy and subtract only if we are close to the edge...
Note that the patch "breaks" two of the pserver reftests since the gradients are slighly different. If you think the approach is ok it is easy to regenerate them, but I figured it was better to first check with you if the approach is ok.