Ethan,
That is working correctly. With unbounded scrolling, viewport(left) could be anything: 12,453,121 or -7,231
so adding viewport(left) + viewport(right) may give you a very large positive or negative number - way bigger than the width of the screen.
You want to set the sprite width to viewport(right) - viewport(left)
a couple months ago I was working on an app that always used the full screen on a cell phone by using unbounded scrolling. I was amazed at how many bugs I created because of assuming viewport(left) is zero. Things like centring a button on the screen - you would think it is the width divided by two (viewport(right) - viewport(left)) / 2. But that assumes the left edge is at 0. So, you have to always start from the actual left viewport coordinate and do something like:
ViewportLeft("HUD") + (ViewportRight("HUD") - ViewportLeft("HUD")) / 2
And, of course, you have to remember that the top of the screen isn't zero either.