Context
It would be nice to have a function which smooths contours plots once they have been done. There are various solutions which involve smoothing the data before making the contours, but here I am after a solution which operates on the graphics itself.
Example
pl = ContourPlot[ x^2 + y^2 + RandomReal[{-0.1, 0.1}], {x, -1, 1}, {y, -1, 1}, Contours -> 3, PlotPoints -> 3, ContourShading -> False] 
Question
I would like to smooth this contour as post processing.
Attempt
The following seems to work for line contours as above.
Normal[pl] /. Line[a__] :> Line[ Transpose@{GaussianFilter[First /@ a, {5, 5}], GaussianFilter[Last /@ a, {5, 5}]}] 
But what about smoothing Shaded contours? I.e. how to I smooth also the polygons? How can it be made to work on, say,
pl = ContourPlot[ x^2 + y^2 + RandomReal[{-0.1, 0.1}], {x, -1, 1}, {y, -1, 1}, Contours -> 3, PlotPoints -> 3, ContourShading -> True] 









