You have a problem here:
// Setup pin directions
pinMode(TFT_CS,OUTPUT); // <------ here
pinMode(TFT_DC,OUTPUT);
pinMode(TFT_LED,OUTPUT);
pinMode(TFT_RST,OUTPUT);
pinMode(13,OUTPUT);
The TFT_CS pin is managed by the Due hardware exclusively - if you set it
also as an output GPIO pin as with the line pinMode(TFT_CS,OUTPUT)
then you have the SPI hardware actually fighting the GPIO hardware and
risk damaging the Due. (put a 'scope on the CS line and you'll see it go from
3.3V down to 1.6V or so....)
This ought to be better documented as its not obvious, and its a real case where
you might be able to fry a Due without atttaching anything to the pins, since it
seems there are duplicate output drivers on some pins (rather than doing it properly
with a gate or selector).
With the Due you avoid setting pinMode for any SPI pin, just use the SPI library.
I believe the examples with the Due SPI library are broken (but happen to work
by accident).
[edit: No, its more complicated than that - if you use just SPI.begin(), then
you seem to be OK with the pinMode declaration, but if you use SPI.begin (10), and
then SPI.transfer (10, ...) you get the behaviour whereby using pinMode is dangerous....
When pinMode clashes with the SPI hardware the current consumption jumps about 30mA,
so its a definitely two drivers fighting. So far I haven't fried my Due, but its a worry
]