Prevent _clamp from altering bounds

It's currently possible to specify the viewport bounds, but the _clamp function will overwrite them.

This simply changes how _clamp compares/adjusts the viewport so that the bounds aren't modified.

This fixes #457.

The only thing that bothers me is that someone went out of their way to have _clamp modify the bounds -- is there some reason I'm missing for doing it that way?