I've been changing portion sizes. That seems to be key. We don't eat badly, but I'd been in the habit of giving him More when he asked - thinking, what's wrong with more? he wants more fruit, give him more fruit!
But really, it's the more more more, that, I believe is the problem.
Also smaller pieces of foods, so he is doing more Work in eating, so it takes more time to eat a meal. Instead of a half-sandwich, I cut it in to smaller pieces. Not because he can't chew or needs baby-sized pieces, but just because the more time it takes for him to eat, the more often he will recognize that he's getting full and doesn't need to ask for more. He can eat a 1/2 sandwich in two bites, 10 seconds, and his body doesn't catch up to his need for "more".