So it is controlling it of sorts but in the inverted way to what I was after.
There are a couple of ways to deal with that. One is just to invert the duty cycle value: if you've calculated a value of, say, 400, you just change it to 623 with a statement like:
duty = 1023 - duty;
That will give you the transistor "on" time you want.
Or, you could use a PNP transistor, and switch the high side of the power supply instead of the low side. When the TLC5940 turns on its output and pulls it low, it will turn on the transistor. Which will work the way you wanted it to.
(Although I'd suggest you consider using a P-channel power MOSFET, instead of a PNP: it should waste much less energy. Which means significantly less heat to dissipate when controlling that many high-current loads)
The M5451 doesn't allow for different PWM values on the different channels like the TLC5490 does, so it's not really suitable for your purposes.