The DF Robot shield I got from Deal Extreme in October 2015 also has the excess current problem so I did a bit of investigating.
I unsoldered the LCD to see what was underneath. In my case R7 is 1k ohm and the transistor is marked J3Y which according to the data sheet is a S8050 NPN rated at 0.5A with Hfe of 120-350.
To turn the transistor fully on, and supply the backlight with the 18.5mA it needs:
I(base) = I(collector)/Hfe = 18.5/120 = 0.15mA flowing into the base of the transistor.
To achieve a base current of 0.15mA the base resistor needed is:
Vcc-Vbe/Ibase = (5V-0.7V)/0.15mA = 29k ohm. I had only had a 10k resisotor so used that.
I reused the 1k ohm resistor to connect from the PWM pin 10, to the 29k (10k) base resistor. The combination limits the base current to 5mA.
As a side note, I used pin 3 for PWM as pin 10 conflicts with the Chip Select line on my data logger shield. I tried pin 9 but it made the backlight flicker instead of dimming. The other PWM pins had no effect. I have no idea why.
While I had the LCD off the board I made some measurements with the arduino, the sheild with and without LCD screen and the backlight on it's own.
Backlight Arduino, Arduino, Arduino, LCD only Arduino,
brightness LCD shield, LCD sheild No LCD shield No Arduino, Modified shied
LCD No LCD No LCD No LCD sheild LCD
Full 79mA 58mA - - 67mA
Minimum 56mA 55.1mA - - 55mA
Off 55mA 55mA 50mA 18.5mA 55mA
So the current draw for the components are:
over 125mA Unmodified shield with backlight full brightness, LCD and Arduino Uno R3
18.5mA Backlight only, no LCD screen.
0.1mA LCD screen, no backlight
5mA LCD shield only, no LCD screen, including modified resistor and power LED, backlight off
8mA LCD shield only, no LCD screen, including modified resistor and power LED, full brightness
50mA Arduino Uno R3 only