Input.GetKey() [or variant] not working after I change scenes

First, my simple player movement script:

function Update ( ) {

        var v = Input.GetAxisRaw("Vertical");    
        var h = Input.GetAxisRaw("Horizontal");
       	
        
        if(debug) {
        	print("h: " + h);
        	print("v: " + v);
            print('up button: ' + Input.GetKey('up'));
            print('down button: ' + Input.GetKey('down'));
        }
    
        lastPosition = transform.position;
        var currentMovementOffset = Vector3(h * movement.walkSpeed, v * movement.walkSpeed, 0);
        currentMovementOffset *= Time.deltaTime;
        movement.collisionFlags = controller.Move(currentMovementOffset);
}

After hitting a trigger and changing scenes, if I’m holding down both a right/left and up/down key (moving diagonally into the room), I’ll get into the room with only the left/right keys working, up and down are both returning false on Input.GetKey(). However, I’m clearly holding down one of those two keys. If I let go of the key then press down again, it works. I’ve done lots of debugging, nothings working. Any suggestions? Oh and this for a 2D project.

Throw this in somewhere and see if it’s called when you change scenes:

if(Input.GetKeyUp('up'))
    Debug.Log("up key released");

If not, then you can track the key states yourself in the following manner:
Edited according to comments/feedback.

var upKeyDown : bool = false;
var sceneChanged : bool = false;
var currScene : String = '';
var prevScene : String = '';

function Start()
{
    currScene = Application.loadedLevelName;
    prevScene = Application.loadedLevelName;
}

function Update()
{
    if(Input.GetKeyDown('down'))
        upKeyDown = true;
    else if(Input.GetKeyUp('down'))
        upKeyDown = false;

    SceneChangeCheck();

    if(upKeyDown)
    {
        //...
    }
}

function SceneChangeCheck()
{
    currScene = Application.loadedLevelName;

    if(currScene != prevScene)
        sceneChanged = true;

    if(sceneChanged)
    {
        if(!Input.GetKey('down'))
        {
            upKeyDown = false;
            sceneChanged = false;
        }
    }
}

No this is an outright bug. If you are pressing Vertical and Horizontal axes and switch scenes it will zero out the horizontal and leave the vertical as you had it held. If you are only holding horizontal and not touching vertical it works fine. Clearly this is not something that should have to be worked around. Especially in game setups that cannot use additive loads.