I've been implementing SSAO based on the article here and I've been running into several issues, mainly with sampling the position from the depth buffer. I've tried numerous methods but all seem to give me undesirable effects, though they all seem to have something in common: the SSAO effect looks correct at a small portion of the center of the screen but begins to distort around that center.

I am thinking maybe it may have something to do with how I am setting up my projection matrix, but I can't say for sure. I'd appreciate to anyone that can explain to me what I am doing wrong.

Here's the source code for those who would like to dabble with it: https://dl.dropboxusercontent.com/u/...eshoot_ssao.7z
It's a simple scene that renders a flat floor and the suzanne head model. The code of interest can be found in renderMain.cpp. The kernel and noise texture initialization begins at line #135 and the rendering begins at line #232. I apologize for the mass commented lines of code scattered everywhere; I've had to strip out a lot of irrelevant code just for this.
Notes on compiling

The only dependency used is SDL2 and compiling should not be an issue. I've included both MSVC 2008 and XCode workspaces though both may need some minor config tweaks.
Notes on running application

The engine expects to find files under the /defs, /fonts, /materials, /progs, and /textures directories. It's important to make sure that the executable that you're running is located where these folders are, if not the app will crash due to missing resources. You can open config.cfg and set the path for kf_basepath if you want the engine to look for these resources elsewhere. To exit the application, press '~' to bring down the console and type quit to exit. The configs also has this binded to Q.
Controls

Holding down left mouse button moves camera forward and sideways, while right mouse button rotates the camera. Holding down both will make the camera move vertically.

Anyways I hope this is enough for anyone to help troubleshoot this problem. I frequently lurk on these forums so please don't hesitate to ask any questions.