First, the dot at the center of your filter kernel is effectively representative of the average brightness/intensity/offset/bias of the image. That's a key part of filters. If you convert an image from the spatial domain to the frequency domain, and mess with the central pixels, you will change the average brightness of the image.
Second, it seems like you are implementing a brick-wall type filter, by just generating a black circular shape in your kernel. If you were to visualize this as a 3D image, it would look like a solid cylinder. To remedy the ringing artifact (ie: any time you use a brickwall filter, you will encounter a ringing/aliasing artifact), use a Gaussian type of filter. If you visualize it as a 3D image, it looks like a mountain-type shape which is Gaussian distributed. Please refer to the references.
So, in short, rather than generating a brickwall filter, use a Gaussian filter. Refer to the section "Low Pass Filtering: Blurring" in reference [3] for a fully described graphical example.
References
- Gaussian Smoothing, Accessed 2014-02-19,
<http://homepages.inf.ed.ac.uk/rbf/HIPR2/gsmooth.htm>
- Gaussian Filtering, Accessed 2014-02-19,
<https://www.cs.auckland.ac.nz/courses/compsci373s1c/PatricesLectures/Gaussian%20Filtering_1up.pdf>
- Test FFT Processing, Accessed 2014-02-19,
<http://www.fmwconcepts.com/misc_tests/FFT_tests/>