........ snip...........
Ideas anyone?
Yeah. Without trying to duplicate your results I'll say this:
Be sure you're inputting your data correctly. Be certain you understand station pressure, barometric pressure, altitude, density altitude, and temperature. For example, if your program expects you to input barometric pressure and you input station pressure, you will have a significant error, especially if you're shooting in the mountains. In other words, make sure you and your app are speaking exactly the same language. Your altitude is quite far above any ballistic apps default value, so be sure you're giving your app the correct values.
Slope is a factor as well. My app lets me measure it using my smart phone and I do that even for shooting matches at 600 yards. I would think ignoring slope is a bad idea if you're trying to get real world ballistics and your ballistics app to match. You may be shooting up or down 3 or 4 degrees without realizing it because eyeballing slope isn't easy.
As others have pointed out (some of them anyway) slight differences in scope mounting and especially differences in scope brands are likely to make only small differences or no difference at all.
Then there is bullet B.C. VERY few shooters are able to measure BC and we go on what the manufacturer claims. It should come as no surprise that better BC claims can be used as a marketing tool. An actual BC which is different from what is claimed (and input into your ballistics app) is another source of error and may be the most difficult variable to nail down.
Coriolis effect and spin drift can be significant at longer ranges, so be sure you take those into account. The effect can be nearly a foot at 1000 yards.
Bottom line: Make sure you don't ignore any significant variable and be sure you're putting in the correct values for each one of those variables. On top of that realize that you may be dealing with a BC which is less than perfect, perhaps because of an aggressive marketing department.
Good luck.