The shift is correct. That looks exactly like my original working code from here.
My guess is that the device is wired incorrectly, damaged, or maybe has had the address changed.
this datasheet does not mention shifting the address..
Just one of many that do not know the difference between an I2C address and the first byte sent to an I2C device. 0xd0 is the latter. One clue is the fact that I2C addresses are all less than 12810 (that's 0x80) - 0xd0 can't be an address.
The Wire library expects the address, and does its own shifting.