Make sure you weigh out what you're feeding, and keep it to 2KG or less per feed as their stomachs can't handle more than that. If you're feeding quite a bit more, split it into a third lunchtime meal. I found that when my TB was very underweight after being ill a few years ago, I was giving him two very large feeds a day, but he simply wasn't gaining weight. When I dropped it to three 2KG feeds, the weight started to go on.
For weight gain, I use Allen & Page Calm & Condition, with Alfa A Oil. Pink Powder made a massive difference to him as well - he'd been on a lot of penicillin, so the Pink Powder re-balanced the bacteria in his gut and meant he was getting more out of his feeds, rather than just passing it through his system. At one point I was feeding Speedibeet as well, because my RI suggested it, but to be honest I didn't feel the beet really made any difference. D&H Build Up cubes are very good as well, and I used these with great success.
Check out something like the Baileys website, as they have a calculator utility which you can put your horse's weight, workload, etc, into and it will give you a rough idea. It's not foolproof as there are various factors which the calculator can't take into consideration (your horse's breeding, whether they're a good/poor doer, how many hours at grass, etc) but should give you a good starting point.