Transitions and transitions. Canter, walk, trot walk, trot backup. And lots and lots of backup. He always has to be ready to slow down. Do it as lightly as possible possibly only with your weight. Shorten the stride while maintaining rhythm.
Also I highly recommend watching Philippe Karl lessons.
As Mark and Will said, you need to encourage him to carry himself. I recommend a lot of downward transitions because when executed properly, they make the horse engage the hind end. Not only from canter to trot to walk, but extended trot to collected trot. A lot of collection and circles will help strengthen his hind end which will make it easier for him to carry himself in a balanced manner.
I agree with Will. If with those exercised nothing change you can try to use another bit (an elevator bit).
If your horse is on the forehand, it is because he has a bad longitudinal balance, it means he carries his weight on the forehand and does not step under with the outside leg. When he does this, do not carry him with your hands, even if it is the natural reaction to this problem! First, you can ride with long reins, your horse will be without support so he will have to straighten up a bit. Then, keep in mind you have to work with impulsion. Start in walk, then in trot and check your horse steps under with the outside leg. Don't forget to put your back and shoulders back in order to not intensify the fact your horse is on the forehand. Working on upward and downward transitions will help a lot!