I've thought that limits of double (and float) datatypes are quite higher, on my system DBL_MIN=2.22507e-308, FLT_MIN=1.17549e-38. And in Qt4.2 it worked quite better.

I can't just divide all values by fixed number since they are not known in advance. It seems that I have to forget about scale() method and use manual scaling.