Fish-eye Lens
This is an update on the version I posted on OP. It uses an off-screen buffer for the lens and the user can control the lens using the keyboard.
LEFT/RIGHT arrow keys change the magnification
UP/DOWN arrow keys change the level of distortion
R key resets the lens properties to their starting values.