WeatherShield showing wrong battery voltage?

I have a WeatherShield along with an Xbee Shield stacked on an Uno powered with a single-cell lipo, charger, and solar panel. When the battery voltage is 4.2V or so (fully charged), the Arduino thinks it is 20V. My project is based off the Wimp Weather Station code (https://github.com/sparkfun/Wimp_Weather_Station). The only thing I added was sleep cycles and removed the features I won’t be using (rain and wind).

Battery output is hooked into A2 and I verified that voltage on that pin matches the battery. I verified the 3.3V reference on A3. Arduino is getting power from the battery/solar board (hooked directly into the 5V pin).

Everything works great, except the battery level reading. Any ideas on what’s going on? Do I need to tweak the values in the get_battery_level function (say the 4.90 multiplier)?

I dunno why I didn’t think of this before, but I did some quick math and noticed that the 4.90 multiplier is what seems to be throwing things off. Removing that shows a much closer voltage reading - it’s spot on at about 3.9V but I haven’t tested it yet with other charge states to make sure it is accurate enough to alert on. Only thing I can think of is a different way I am wiring the power and/or the fact that the WeatherShield examples may be assuming a RedBoard over an Uno? shrug