Sorry to say it but it seems like a rider fault not a horse fault. No offense intended.
If your horse can pick the lead on the lunge then he knows what to do, but whilst you are riding he may be getting confused messages from your aids.
All riders, like horses are one sided, stronger on one than the other and this is reflected in how well our horses work. My advice is to over exaggerate your left canter aid, make sure your weight is in your inside seat bone and down your inside leg, your legs are in the correct positions, you are flexing him/her properly etc.
Without seeing you ride, I am guessing that your left aid is too similar to your right for your horse to tell the difference (probably more a wight distribution issue more than leg placement) I've taught riders who have had their legs in the correct position, but their weight has been all over the place and confusing the c#@p out of their poor horse. It's easily fixed, you just have to be conscious of where your weight is.
Sorry about the spiel, but I hope it helps