In layman's terms, you are trying to map the range [0, 1] onto [0.01, 10000000]. With floating point numbers, that is not going to work so well. To make matters worse, the range [0, 1] uses a logarithmic scale. Decrease the space between the near and far planes.