Thank you that's helpful. This means we know we're likely dealing with an issue detecting that software rendering is required on Citrix Workspace.
I got a couple more things to try. Without the workaround above to force software rendering, when you load the mapview, in the output you should see a message a long the lines of
"[AppName] Information: 0 : Software rendering forced by ..."
Do you see this in both the NETFX and NET3/5 cases? (you should definitely see it with the workaround to force software rendering). If so, what does the full message read?
I'd be curious if NETFX for some reason detects it, but .NET 3/5 fails to do so.
Second, I forgot to mention the above code for getting values should be run in the Window's Loaded event. If you do that, the HwndSource returned shouldn't be null. Would you mind reposting the values returned after the window has loaded?