Are you riding english or western?
From your description, it sounds like you are neither using your seat or your legs to influence your horse. I would for starters, go back to basics; working at the trot solidifying your position. Make sure your leg is underneath you, your heel is down, you are sitting up tall, you have bend in your elbows and that you are looking up.
Once you have that down pat, you can then move up to the canter and work on influencing your horse and not just being a passenger who is probably getting in the way of his movements. Start of on the right beat by asking the horse to take off correctly. Make sure he strikes off on the correct lead and that he is not rushing into the canter. That only makes the canter itself worse if he is running into it and then you spend a lot of time balancing him back up. When you ask for the canter, he should do it right away or at least within two trot or walk strides. If he doesn't, bring him back and ask again. Once he has taken off nicely into the canter, assuming you are riding english, establish your position. Make sure you have your heel down, your leg underneath your seat, your butt deep in the saddle, sitting up tall and good bend in your elbows. Put your leg onto your horse and at the same time take up more contact with the bit. This should help him to re-balance and ease up if he's just doing his own thing. Keep this contact and push him forward with your legs. Move your body with him. You don't want to be as stiff as a pole but you do not want to be pumping with your hips.
I would try and keep it short and sweet for a bit. If he goes great for you, bring him back to a trot or walk. Don't drag it out and risk him falling apart. Transitions will help as well to keep his attention on you and your body language. :)
Opportunity is missed by most people because it is dressed in overalls and looks like work. ~Thomas Edison