If you're doing the rotation in createScaledBytes, then there shouldn't be a need to do it on the thumbnail?  The thumbnail is just based on getPartDataInputStream(), which should be the scaled part.