Spawning object with wrong color

This my is first forum post so I apologize for any format errors.

In my game, player’s are an outline of a circle. On the press of a button, the circle expands until the user presses the button again. After that, a filled in circle is supposed to spawn with the players color at the original position the user touched and slowly expand until it reaches the outline circle and fills in the shape. The problem I’m having is when the circle spawns it’s not the player color. Server side the colors are correct, just not client side. Heres my code, apologies for how messy it is. I’m kind of in a “Just get it working” phase right now.

Any help would be appreciated.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Networking;

public class Shape_Script : NetworkBehaviour
{
    private Vector3 touchPosition;
    private Vector3 originalScale;
    Transform playerTrans;
    [SyncVar(hook = "expandHook")]
    Vector3 playerScale;
    [SyncVar(hook = "fillHook")]
    Vector3 fillScale;
    [SyncVar]
    public float extendRate;
    [SyncVar]
    public float fillRate;
    [SyncVar]
    public Color playerColor;
    public GameObject fillSprite;
    public GameObject playerPrefab;
    private GameObject fillSpriteClone;
    [SyncVar]
    private Color fillSpriteColor;
    public ParticleSystem stunPrefab;
    [SyncVar]
    public float stunTime = 5f;
    [SyncVar]
    private bool canScale = false;
    private bool canCapture;
    //[SyncVar]
    //bool isVisible = true;
    [SyncVar]
    private int playerScore;
    bool alreadyScaled;
    GameObject[] playerPrefabs;
    NetworkHash128 playerAsset = new NetworkHash128();
    public int PlayerScore
    {
        get
        {
            return playerScore;
        }
        set
        {
            playerScore = value;
        }
    }
    public bool CanCapture
    {
        get
        {
            return canCapture;
        }
    }


    // Use this for initialization


    private void Start()
    {
        playerPrefabs = new GameObject[4];
        GetComponent<SpriteRenderer>().color = playerColor;
        originalScale = transform.localScale;
        fillSprite.transform.localScale = originalScale;
    }

    public override void OnStartClient()
    {
    
        //foreach(var prefab in playerPrefabs)
        //{
        //    var i = 0;
        //    if (prefab == null)
        //    {

        //        playerPrefabs[i] = fillSprite;
        //        ClientScene.RegisterPrefab(fillSprite, playerAsset);
        //    }
        //    else
        //    {
        //        i++;
        //    }
        //}
     
    }
    private void Expand(Vector3 currentScale)
    {
        if(canScale)
        {
            if (isServer)
            {
                RpcExpand();
            }
            else
            {
                CmdExpand();
            }
        }
    }

    private void Fill()
    {
            if (isServer)
            {
            RpcFillShape(fillRate);
            }
            else
            {
            CmdFillShape(fillRate);
            }
    }

    private void expandHook(Vector3 value)
    {
        this.transform.localScale = value;
    }
    private void fillHook(Vector3 value)
    {
        fillSpriteClone.transform.localScale = value;
    }

    void changeVisible(bool value)
    {
        if (isServer)
        {
            RpcChangeVisible(value);
        }
        else
        {
            CmdChangeVisibility(value);
        }
    }
    void defualtScale(Vector3 value)
    {
        if (isServer)
        {
            RpcOriginalScale(value);
        }
        else
        {
            CmdOriginalScale(value);
        }
    }
 
    void setColor(Color playColor)
    {
       if(isServer)
        {
            RpcSetFillColor(playColor);
        }
       else
        {
            CmdSetFillColor(playColor);
        }
    }


    // Update is called once per frame
    void Update()
    {
        //This detects where the player touched and if he touched a player or not.
        if (!isLocalPlayer)
        {
            return;
        }
        if (Input.touchCount == 1 && Input.GetTouch(0).phase == TouchPhase.Began && canScale == false || Input.GetMouseButtonDown(0) && canScale == false)
        {
            Vector3 playerLocation;
            if (Input.GetMouseButtonDown(0))
            {
                playerLocation = Input.mousePosition;
            }
            else
            {
                playerLocation = Input.GetTouch(0).position;  
            }
            float x = -2.87f + 5.74f * playerLocation.x / Screen.width;
            float y = -4.75f + 9.5f * playerLocation.y / Screen.height;
            touchPosition = new Vector3(x, y);
            RaycastHit hit;
            Ray ray = Camera.main.ScreenPointToRay(touchPosition);
            if (Physics.Raycast(ray, out hit) && (hit.collider.tag == "Player" && !isLocalPlayer))
            {
                Debug.Log("Ive Been Hit");
                var otherPlayer = hit.collider.GetComponent<Shape_Script>();
                otherPlayer.stunPrefab.Play();
                otherPlayer.StartCoroutine(Stunned());


            }
            else
            {
                StartCoroutine(MovePlayer(touchPosition));
            }
        }


    }
    //This moves the player to the specified touch position makes them visible and slowly scales them until the player touches again.
    IEnumerator MovePlayer( Vector3 touchposition)
    {
        canCapture = false;
        canScale = true;
        yield return new WaitForSeconds(0.5f);
        if (canScale)
        {
            //changeVisible(true);
            CmdChangePosition(touchposition);
            var originalPosition = touchposition;
            while (Input.touchCount == 0 && Input.GetMouseButtonDown(0) == false)
            {
                Expand(this.transform.localScale);
                yield return null;
            }
            canScale = false;
            CmdCreateShape(playerColor,originalPosition);    
            while (!fillSpriteClone.transform.localScale.magnitude.Equals(this.transform.localScale.magnitude))
            {
                Fill();
                yield return null;
            }
            canCapture = true;
            yield return new WaitForFixedUpdate();
            //CmdChangeVisibility(false);
            defualtScale(originalScale);
            CmdDestroyClone();
        }
    }

    IEnumerator Stunned()
    {
        yield return new WaitForSeconds(stunTime);
    }

    private void CmdDestroyClone()
    {
        NetworkServer.Destroy(fillSpriteClone);
    }


    [Command]
    private void CmdChangeVisibility(bool updatedVisibility)
    {
        this.GetComponent<SpriteRenderer>().enabled = updatedVisibility;
    }

    [Command]
    private void CmdSetColor(Color value)
    {
        fillSprite.GetComponent<SpriteRenderer>().color = value;
    }

    [ClientRpc]
    private void RpcSetColor(Color value)
    {
        GetComponent<SpriteRenderer>().color = value;
        fillSprite.GetComponent<SpriteRenderer>().color = value;
    }
    [ClientRpc]
    private void RpcChangeVisible(bool value)
    {    
       this.GetComponent<SpriteRenderer>().enabled = value; 
    }
    [Command]
    private void CmdOriginalScale(Vector3 value)
    {
        playerScale = value;
   
    }
    [ClientRpc]
    private void RpcOriginalScale(Vector3 value)
    {
        playerScale = value;
    }
    [Command]
    private void CmdChangeScale(bool updatedScale)
    {
       this.canScale = updatedScale;
    }
    [Command]
    private void CmdChangeCapture(bool updatedCapture)
    {
        this.canCapture = updatedCapture;
    }
    [Command]
    private void CmdCreateShape(Color playColor, Vector3 touchposition)
    {     
        fillSpriteClone = Instantiate(fillSprite, touchposition, Quaternion.identity);
        setColor(playColor);
        ClientScene.RegisterPrefab(fillSpriteClone);
        NetworkServer.SpawnWithClientAuthority(fillSpriteClone, this.gameObject);  
    }
    [Command]
    private void CmdExpand()
    {
        playerScale += new Vector3(0.01f, 0.01f)  * Time.deltaTime * extendRate;    
    }
    [ClientRpc]
    private void RpcExpand()
    {
    
       playerScale += new Vector3(0.01f, 0.01f) * Time.deltaTime * extendRate;
    }
    [Command]
    private void CmdFillShape(float fillrate)
    {
       fillScale= Vector3.MoveTowards(fillSpriteClone.transform.localScale, this.transform.localScale, fillRate * Time.deltaTime);

    }
    [ClientRpc]
    private void RpcFillShape(float fillrate)
    {
       fillScale = Vector3.MoveTowards(fillSpriteClone.transform.localScale, this.transform.localScale, fillRate * Time.deltaTime);
    }
    [Command]
    private void CmdChangePosition(Vector3 tposition)
    {
        this.transform.localPosition = tposition;
        if (isServer)
        {

            RpcChangePosition(tposition);
        }
    }
    [ClientRpc]
    private void RpcChangePosition(Vector3 tposition)
    {
        this.transform.localPosition = tposition;  
    }

    [Command]
    private void CmdSetFillColor(Color value)
    {
        fillSpriteClone.GetComponent<SpriteRenderer>().color = value;
    }
    [ClientRpc]
    private void RpcSetFillColor(Color value)
    {
        fillSpriteClone.GetComponent<SpriteRenderer>().color = value;
    }
}

What color is the circle suppose to be?