A fast, spatially adaptive filter for smoothing colour images while preserving edges is proposed. To preserve the edges, we use a constraint that prohibits the increasing of the gradients in the process of diffusion. This constraint is shown to be very effective in preserving details and flexible in cases where more smoothing is desired. In addition, a filter of exponentially increasing diameter is used to allow averaging non-adjacent pixels, including those separated by strong edges.