Half halts every other step will make a huge difference; you can never do too many. Also keeping your canters short; transitioning down before he gets strung out and on the forehand, while the canter is still good quality. This may only mean cantering for a few steps, but with time he'll learn that you only want good quality canters, and get better at keeping them. This just means not doing laps of canter in your warmups, you can still canter for longer later in your rides when he is going better.
I had the same problem. Go back to basics. Get a good soft walk and trot. Smooth transitions. Everytime the horse braces up bend them until they start feeling softer. Then release. All horses want is peace and comfort. So take the pressure off when he's soft and moving nicely. And don't drill on trying to get a soft canter. Go out on trails too and just canter following other horses. Try collecting then too. Make it fun for you and the horse.