If you have been using OS X Lion, you will find that Apple has implemented an elastic bouncelike feature to its scrolling behavior, where when you reach the end of a document while scrolling, the page will appear to stretch beyond the extent of the page where it reveals a gray texture pattern, followed by sliding back to its expected location. This behavior occurs when you use multitouch input devices such as Apple's trackpads or Magic Mouse, and while fun from some perspectives, it's a feature that some might not want to have on all the time.
While this elastic scrolling feature is neat to have in the direction one is scrolling, a problem with it is it works in all directions so when scrolling vertically through a document, the page may take any horizontal movements as an indicator to push the document side to side.
Apple does offer a few options to manage some of its mouse input behaviors, which can be found in the Universal Access system preferences. In these preferences, going to the "Trackpad options" section will give you options to enable or disable inertial scrolling, but while this will prevent the action from happening to some degree, it will not halt it. Additionally, inertial scrolling is highly beneficial for quickly traversing large documents so people may wish to keep it enabled.
Unfortunately Apple does not provide an option to remove this elastic scrolling behavior for those who want to disable it; however, after extensive investigation of this issue by a number of individuals on the Apple Discussion forums, members found that you can disable this scrolling behavior by disabling a hidden variable in the user's global preferences settings. To do this, simply open the Terminal utility (located in the /Applications/Utilities/ folder) and run the following command:
defaults write -g NSScrollViewRubberbanding -bool false
This command simply adds the "NSScrollViewRubberbanding" variable to the user's global preferences file (which is a hidden file in the user's preferences folder), and then sets it to be false. When set, when the user logs out and the logs back in the variable will be read as "false," or "disabled," instead of its default "true" value. Therefore, once the user has logged out and back into the system, you should be able to use inertial scrolling and other previous scroll behaviors, with the exception that pages will no longer move beyond their extents when you reach the end of them.
This configuration works well on all applications that previously allowed for the scrolling behavior, with the exception of Safari. It appears that Safari must use either a different global implementation of this behavior, or use its own that is separate from the global options implemented by other programs. For now the ability to turn off this feature for Safari or other applications individually has not been uncovered, but if you wish to disable the elastic scrolling behavior in other programs, then this command should do it.
If you decide you want to re-enable elastic scrolling, then you can do it by removing the new variable from your global preferences folder with the following command:
defaults delete -g NSScrollViewRubberbanding