I had the same problem after my pony had an injury, he just had so much energy he'd try to run faster or buck when I made him canter.
What i did, is as soon as he bucks i whip him on his behind and stop him completely and make a "UUURRGG!!!" kind of sound xD
I dont know how to spell that sound, but its a stern sound which I always use so he knows I'm angry at him.
Althouth whipping him (dont exaggerate, i dont mean whip as hard as you can, just so your horse knows its for punishment) caused him to buck once more or kind of "jump", it still works since the horse realises its not time for fun and play and he'll have to do his bucking afterwards.
Stopping him helps too since the horse realises that bucking wont release him of his energy since he'd only have to stop, energy still there.
Then I make him canter from a stop and then he doesnt buck. (If your horse does, you just repeat the whole thing)
You might think it wont help to stop the horse because it means he's not working, or that giving him a small whip will only make it wilder, but actually its not.
See, when u give him a whip, he'll want to run faster and buck more but since you're practiclly stopping him at the same time, he realises that if he bucks or tries to run off, he'll only feel some pain and not even get to run anyway.
Then, why make him canter from stop (or at least walk)?
Because then the horse realises that just because he stopped doesnt mean he'll get to trot or walk (aka. rest). You have to canter straight away so that even though you had to stop him completely so he wont buck and run off, it doesnt mean he wont canter anyway! He'll just be continuing where you left off, as if there was no incident.
I hope you understood that. :)
I'm not very good at explaining over internet, it'd be easier if I was there, but I'm not so oh well xD
Of course you alsohave to consider that this MIGHT not work on your horse! Since I cant see how you're doing it, I cant correct you incase you do something wrong, or your horse might just be too stubborn or something.
Oh and, one more advise xD
About once or twice a month I let my horse run on a stretch of land / field. Just let him go (sitting on him, of course, but letting go of the reins) and let him gallop his heart off until he doesnt want to anymore or is tired. :) He loves it! And you will too. And he'll be more calmer when riding in the riding house / arena.
"When I bestride him, I soar, I am a hawk: he trots the air; the earth sings when he touches it; the basest horn of his hoof is more musical than the pipe of Hermes." -Shakespeare