U seem to be feeding him too much and too much variety.
For small dog breeds 2 meals are enough. Also feed him one type of food. Small breeds tend to get pampered and spoilt very soon. If you wish to feed him packet food then just feed him that. Change the food slowly and in the beginning he may not eat but dont worry he will be fine in a day or so. No tit bits inbetween meals as that also spoils their habits and makes them put on weight which is not good for their backs.
I am not too fond of pedigree personally although it is very reasonable. I would personally suggest Eukanoba as an alternative.