Resize a sprite on a sprite renderer

I’ve got a Sprite inside a Sprite Renderer and it looks great. However, when I click a button I want that sprite to change from one Sprite to another. However, my second sprite is much larger than the first. As a result, it’s overflowing my Sprite Renderer.

Here is the code attached to my button:

public Sprite[] myCardSprites;

public void changeCardArtwork ()
	{
		GameObject g = GameObject.FindGameObjectWithTag ("CardArt");
		SpriteRenderer s = g.GetComponent<SpriteRenderer> ();

        foreach (Sprite currentSprite in myCardSprites)
        {
            //Set the image to the Rhino
            if (currentSprite.name == "Rhino")
            {
                s.sprite = currentSprite;
            }
        }
	}

I’ve tried a couple of differnt things like changing the transform.localscale on the SpriteRender and tried Sprite.texture.Resize. I also tried to add a Rect Transform onto my SpriteRender to sort of set bounds. Nothing has worked so far.

What I’d love to happen is for the sprite to just take on the size of the sprite renderer.

Thanks in advance.

@dhaggerfin if this would help you I`ve used next script to scale sprites to one size. Note that they must be read\write enabled.

    private Texture2D ScaleTexture(Texture2D source, int targetWidth, int targetHeight)
    {
        Texture2D result = new Texture2D(targetWidth, targetHeight, source.format, true);
        Color[] rpixels = result.GetPixels(0);
        float incX = (1.0f / (float)targetWidth);
        float incY = (1.0f / (float)targetHeight);
        for (int px = 0; px < rpixels.Length; px++)
        {
            rpixels[px] = source.GetPixelBilinear(incX * ((float)px % targetWidth), incY * ((float)Mathf.Floor(px / targetWidth)));
        }
        result.SetPixels(rpixels, 0);
        result.Apply();
        return result;

    }