qIsNull(double/float) does some bit checking to check if a floating point number is +0.0.
That is not what is wanted in the cases where this function is used in QPointF, QSizeF, QQuaternion, QVector2D, QVector3D and QVector4D.
And in QRectF for example a correct "== 0.0" is used instead (which is also true for -0.0).
which results in QRecfF(0.0, 0.0, -0.0, -0.0).isNull() being true
While using qIsNull like in QPointF
results in QPointF(-0.0, -0.0).isNull() being false
And even worse it is used in QSizeF::scale to not divide by 0.0 which fails for -0.0 of course:
So QSizeF(-0.0, -0.0).scale(QSizeF(1.0, 1.0), Qt::IgnoreAspectRatio) results in QSizeF(1, nan)
Please replace qIsNull(double/float) with "== 0.0" in QPointF, QSizeF, QQuaternion, QVector2D, QVector3D and QVector4D.