UI Panel object changes position after running scene

I currently am doing following scene: https://i.imgur.com/tZ4vJFG.png

Which has the white panel displayed. The panel is the child of a canvas, which is the child of the camera. Because of this the panel should stay at the position relative to the camera, which it does. However, I have a scene where the camera movies quite a bit, and when I stop the scene, the position of the panel is displaced from the camera: https://i.imgur.com/8btxwMr.png

It moves further and further back the more times I run the scene. I've never seen anything like this, as I would believe the whole scene would return to default after the scene is stopped. What's going on?

Edit: Added new images as SO's system didn't seem to work atm.

Edit2: Should be noted the issue is inconsistent. I run the same scene through (doing the exact same thing every time), and sometime it simply misplaces itself.

Edit3: Adding my main script of the scene, which control all movement.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class IntroManuscript : MonoBehaviour {

    //Initializing outside gameObjects & scripts
    public GameObject spotWindow, structure, monster, spot_Wheelchair, wheelchair, snd_Door, theCamera,
        wheelchairMovingSound, spot_Doll, dollModel, doll_Rigid, dollSpot_spark, car, flashFade;

    public PathLines pathLines;

    //Properties for external objects & scripts
    public float monsterSpeed, wheelchairSpeed, shockPower, deAcceleration,
        dollPushPower, rotateSpeed, carSpeed;

    //Activate the string that matches the next segment
    string steps = "beginning", movingTo = "moveBeginning";

    //Add external scripts
    public Wheelchair wchair;

    //Add audioclips for several audio clips per AudioSource
    public AudioClip snd_wheelchairCol;

    //Bools
    bool playerMoving = false;
    bool playOnce = true;
    bool pushOnce = true;

    // Use this for initialization
    void Start() {
        StartCoroutine(stepDecider());       
    }

    // Update is called once per frame
    void FixedUpdate() {
        switch(steps)
        {
            case "beginning":
                break;
            case "windowOn":
                spotWindow.SetActive(true);              
                break;
            case "monsterWalk":
                monster.SetActive(true);
                monster.transform.position += new Vector3(0, 0, 1) * monsterSpeed * Time.deltaTime;
                break;
            case "monsterPassedWindow":
                Destroy(spotWindow);
                Destroy(monster);
                Destroy(structure);
                break;
            case "doorOpen":
                snd_Door.SetActive(true);
                break;
            case "firstSpotlightOn":
                spot_Wheelchair.SetActive(true);
                break;
            case "dropWheelchair":
                wheelchair.SetActive(true);
                break;
            case "secondSpotlightOn":
                spot_Doll.SetActive(true);
                break;
            case "dollEntrance":
                if(pushOnce == true)
                {
                    dollModel.SetActive(true);
                    doll_Rigid.GetComponent<Rigidbody>().AddForce(-transform.right * dollPushPower, ForceMode.Impulse);
                    pushOnce = false;
                }
                break;
            case "secondSpotlightBreak":
                if(dollModel == null)
                {
                    if(spot_Doll.GetComponent<Light>().enabled == true)
                    {
                        Destroy(spot_Doll);
                        dollSpot_spark.SetActive(true);
                    }
                }
                break;
            case "carEntrance":
                car.SetActive(true);      
                break;
            case "carMove":
                if(Vector3.Distance(car.transform.position, theCamera.transform.position) > 10)
                {
                    car.transform.position = Vector3.MoveTowards(car.transform.position, theCamera.transform.position, carSpeed * Time.deltaTime);
                    flashFade.SetActive(true);
                }
                break;
            case "changeScene":
                SceneManager.LoadScene(2);
                break;
        }

        switch(movingTo)
        {
            case "moveBeginning":
                break;
            case "firstSpotlight":
                if(wchair.wheelchairCollided == false) 
                {
                    theCamera.transform.position = Vector3.MoveTowards(theCamera.transform.position, pathLines.pathPoints[1].transform.position, wheelchairSpeed * Time.deltaTime);
                    playerMoving = true;
                } else
                {                 
                    if(playOnce == true)
                    {
                        wheelchair.GetComponent<AudioSource>().clip = snd_wheelchairCol;
                        wheelchair.GetComponent<AudioSource>().Play();
                        playOnce = false;
                    }
                    theCamera.transform.position = Vector3.MoveTowards(theCamera.transform.position, new Vector3(theCamera.transform.position.x, theCamera.transform.position.y, -6f), shockPower * Time.deltaTime);
                    if(shockPower > 0)
                    {
                        shockPower -= deAcceleration;                      
                    }
                    playerMoving = false;
                }
                break;
            case "secondSpotlightRotating":
                theCamera.transform.rotation = Quaternion.LookRotation(Vector3.RotateTowards(theCamera.transform.forward, pathLines.pathPoints[2].transform.position - theCamera.transform.position, rotateSpeed, 0.0f));
                break;
            case "secondSpotlightMoving":
                theCamera.transform.position = Vector3.MoveTowards(theCamera.transform.position, pathLines.pathPoints[2].transform.position, wheelchairSpeed * Time.deltaTime);
                if(theCamera.transform.position == new Vector3(-1.7f, 1.73f, 7.5f))
                {
                    if(spot_Doll.GetComponent<Light>().enabled == false)
                    {
                        Destroy(dollModel);
                    }
                }
                break;
        }

        if(playerMoving == true)
        {
            if(wheelchairMovingSound.GetComponent<AudioSource>().isPlaying == false)
            {
                wheelchairMovingSound.GetComponent<AudioSource>().Play();
            } 
        } else
        {
            wheelchairMovingSound.GetComponent<AudioSource>().Stop();
        }
    }

    //Assigning second floats, initialize and tweak through inspector
    public float sec_windowOn, sec_monsterWalk, sec_monsterPassedWindow, sec_doorOpen, sec_firstSpotlightOn,
        sec_moveFirstSpotlight, sec_dropWheelchair, sec_secondSpotlightOn, sec_dollEntrance, sec_rotateSecondSpotlight,
        sec_moveSecondSpotlight, sec_secondSpotlightBreak, sec_carEntrance, sec_carMove, sec_changeScene;

    IEnumerator stepDecider()
    {
        yield return new WaitForSeconds(sec_windowOn);
        steps = "windowOn";
        yield return new WaitForSeconds(sec_monsterWalk);
        steps = "monsterWalk";
        yield return new WaitForSeconds(sec_monsterPassedWindow);
        steps = "monsterPassedWindow";
        yield return new WaitForSeconds(sec_doorOpen);
        steps = "doorOpen";
        yield return new WaitForSeconds(sec_firstSpotlightOn);
        steps = "firstSpotlightOn";
        yield return new WaitForSeconds(sec_moveFirstSpotlight);
        movingTo = "firstSpotlight";
        yield return new WaitForSeconds(sec_dropWheelchair);
        steps = "dropWheelchair";
        yield return new WaitForSeconds(sec_secondSpotlightOn);
        steps = "secondSpotlightOn";
        yield return new WaitForSeconds(sec_dollEntrance);
        steps = "dollEntrance";
        yield return new WaitForSeconds(sec_rotateSecondSpotlight);
        movingTo = "secondSpotlightRotating";
        yield return new WaitForSeconds(sec_moveSecondSpotlight);
        movingTo = "secondSpotlightMoving";
        yield return new WaitForSeconds(sec_secondSpotlightBreak);
        steps = "secondSpotlightBreak";
        yield return new WaitForSeconds(sec_carEntrance);
        steps = "carEntrance";
        yield return new WaitForSeconds(sec_carMove);
        steps = "carMove";
        yield return new WaitForSeconds(sec_changeScene);
        steps = "changeScene";
    }
}