Since r73, Three.js automatically resizes textures to the nearest power of two (which might be smaller) in some cases. This means we might loose pixel data: if a sprite is 70x130, it will be resized to 64x128! This is due to WebGL 1.x limitations that will go away with WebGL 2, but we can't just sit and wait for it to happen.
To counteract that, we probably want to create a canvas with next-power-of-two width and height (not nearest, next, so 70x130 would import into a 128x256 canvas) and draw the original texture unscaled into it so that it is not distorted on import. And we'd need to adapt texture coordinates accordingly.
Not entirely sure whether we should try to make this completely transparent for the user (do the change behind the scenes but hide it), or just always resize and enforce PoT textures for sprites. ... There are implications about animations and frames though.
Also of note: at the moment, we allow using any kind of formats for sprites (GIF, JPG, PNG). If we end up editing the source file on import, we could always generate a PNG and return that on download. Which probably makes more sense anyway?