Why does the viewport depend on the method to get it?

Hi Guys,

I am using the GetMousePos and then GetScreenPixelColor to pick up the color in a SColorSpectrum.
It works very well but i have gathered 3 different methods of getting the viewport and they give very different results:

// This one crashes the game as soon as i click the SColorSpectrum
UGameEngine* GameEngine = Cast<UGameEngine>(GEngine);
GameEngine->GameViewport->Viewport->GetMousePos(MousePos, false);

// This one works only on the last client and gives random colors on server and other clients
GEngine->GameViewport->Viewport->GetMousePos(MousePos, false);

// This one works well everywhere
GetWorld()->GetGameViewport()->Viewport->GetMousePos(MousePos, false);

I have no problem since the last method works all right, but i am very curious about the results of the first two methods.

Anyone would care to explain what exactly goes on in the 3 methods ?

Thanks

Cedric