...consider switching to a different brand of gasoline for a while. My gauge started to read too low a few months back. The fuel light would come on when there is still a lot of gas in the tank. Also, after a fill, the gauge needle would not go past the last "tick" on the gauge like it used to.
After 10+ fills, the gauge is reading closer to normal again. Theory: the additives in the gasoline slowly coated the level sensor and the different detergents in the new gasoline is reversing the effect. I remember reading in the paper a long time ago, that it is a good idea to switch gasoline brand every few months, to allow the detergents in the new gas to clean out the deposits of the old gas...maybe there is something to that.