Still trying to resolve some off-by-one behaviour in bluViewport

This ensures we're not missing a pixel off the end but makes scrollbars
appear when they shouldn't when the viewport is the exact width or
height of the image -- though this seems like a problem with calculating
the client area