Weather Module and Weather Complication show different temperatures than Garmin Weather Widget/Glance

I found a couple posts regarding this exact issue, but none of them had an actual solution.

I have a FR965 and I'm developing a custom Watch Face as a personal project that looks similar to a native watch face that I like. I have two fairly easy options for getting the current outside temperature (not my actual code, but including it for reference.

1. Weather module

var currentTemp = Weather.getCurrentConditions().temperature;

2. Complication value

var currentTemp = Complications.getComplication(myTempComplication).value;

In both methods above, the current temperature being displayed is 3 C, and the Condition is 25 (CONDITION_SHOWERS)

In the screenshot below from my real FR965 device, the top 2 values come from the Weather.CurrentConditions class, and the bottom 2 values come from the CURRENT_WEATHER and CURRENT_TEMPERATURE Complication values.

They both match each other, which is good... but, when I switch to a native watch face, I see the current temperature displayed as 4 C (bottom left)

The 4 C matches the native Weather Widget that is launched when you long press the icon on the screen. Note: The timestamp says 18m ago, but I got another update immediately after I took the screenshot and it was still 4 C.

 

A theory in another post was that the two methods might be rounding the source data differently... I hope that's not the case since that would mean we have no way of correcting the rounding error after it's been returned as an integer.

Other theories that come to mind could be that they're pulling local data from two separate locations/stations, or they're not updated at the same frequencies. I'm not sure if the latter statement is true, since at night I would expect local temperatures to drop. In other words, newer data would be colder. I assume the widget is more up-to-date than the Weather Module data, since I was able to manually refresh the widget in real-time and it still showed 4 C. So I would've expected the Widget to be colder than the Weather module if that theory were true... but I didn't see that happening in practice.

The main reason I've chosen to use Complications in the first place is because I love being able to launch the widgets associated to their data values and seeing more info/graphs. I have found the Body Battery and the Stress Complications to be extremely accurate and they match every time I launch the corresponding widgets.

Shouldn't every Complication return exactly what the corresponding widget is currently displaying? Wasn't the point of Complications to give the developers easy access to metrics seen on a native watch face? Especially since a lot of the newer devices will launch that widget when you long press the bounding area.

Any thoughts on what might be going on? And more importantly, is there anything we can do to ensure we display the same temperature that the native faces and native widgets are displaying? Call me petty, but I hate seeing something like 37 F on my watch face, then having to launch the weather widget to get the "actual" temperature the native watch faces think it is.