If the texture fits a 2^x size, say 1024x1024, it is not scaled according to the UV map - this behaviour only for the software render. If it doesn't fit a 2^x size it is scaled and UV assigned correctly.
I've only tried this for textures larger than the object its assigned to.
Try to call build() after assigning the texture to the object (or at least Object3D.recreateTextureCoords()). The software renderer needs some additional processing if the texture isn't 256*256, which both methods will do.
Argh... thx