Troubles with Failing I2C Sensors

The Arduino Uno needs 3.5V for SDA and SCL to see it as a high level (it is in the datasheet, it really is). Most of the time it will work with a 3.3V sensor, but the noise margin has gone out of the window. Since you need all the noise margin you can get, please don't mix voltage levels on the I2C bus.

In Reply #2 I already wrote about using a 3.3V Arduino board (but not the Due), since a level shifter makes the signal a little weaker and a voltage mismatch will cause trouble with longer distances.