Score is incrementing by 8 instead of 1

This is my Score script

public class score1 : MonoBehaviour
{
    public static score1 instance;
    private Text scoreText;
    public int scr;

    void Start()
    {
        scr = 0;
    }
    // Start is called before the first frame update
    void Awake()
    {
        scoreText = GameObject.Find("scores").GetComponent<Text>();
        MakeInstance();
    }

    // Update is called once per frame
    void MakeInstance()
    {
        if (instance == null)
            instance = this;
    }
    public void IncrementScore()
    {
        scr++;
        scoreText.text = "Score:" + scr;
    }
    public int GetScore()
    {
        return this.scr;
    }
}

And this is the code which calls the increment if this is needed

if (transform.localScale.x <= 0.4f && score1.instance != null)
        {
            score1.instance.IncrementScore();
            PlayerPrefs.SetInt("Score", score1.instance.GetScore());
        }
 if (transform.localScale.x <= 0.05f)
        {
            Destroy(gameObject);
        }

and if game is over at 0 its reading the previous score instead of 0

Any time localScale.x is <= .4f you’re incrementing the score. So my guess is that you’re spending more time with x <= .4 than you expect, or are entering that if-block more than you expect. Alternatively, you could be calling IncrementScore() elsewhere more often than you expect.

Ohh i see but i want to update the score if that object reaches scale x<=0.4 and destroy when it scales to x<=0.05 and i still have problem of not updating score to 0 when player dies at the start.
That code is incrementing score after scaling to 0.4 till the object is destroyed at 0.05 so i guess it increment with 8 as 0.05 * 8 is 0.4