DC Motor giving poor output waveform - how do I fix?
I think you will find that the "0V" portion is not really 0V but actually -0.7V (you can see on the image it is somewhere below 0V, check the scope setup to be sure) and that is the back-EMF spike from the motor's inductance turning on the MOSFET's body diode. 

V = -L * dI / dT

As the body diode limits the voltage (a good thing, it could be a few hundred volts otherwise, and destroy the transistors!) the pulse width lasts until the current has fallen to 0. This pulse width will depend on the motor inductance and the current; it probably increases as you load the motor.

Then, with both transistors off, you see the voltage generated by the motor. The only way to eliminate this is to stop the motor - it is proportional to speed. So again, as you load the motor you will slow it, and see the reduction in generated voltage.

You could even sample this voltage during the PWM "off" period to measure the actual motor speed.

The initial peak and decay on the "high" portion of the waveform is again related to the motor's inductance - when the MOSFETs first turn on, the inductance presents a high impedance, so the supply is lightly loaded and the voltage across the motor is high. As the motor current increases, the voltage drops. 

If you can see this peak and decay on the incoming power supply, you can improve performance by adding decoupling or using a lower impedance PSU. If you can't, that suggests some voltage is being dropped across the MOSFETs, and you can improve performance using FETs with lower ON resistance.