/// <summary>
        /// Draws the surface background.
        /// </summary>
        protected virtual void DrawBackground()
        {
            var background = Style.Background;

            if (background && background.ResidentMipLevels > 0)
            {
                var   bSize = background.Size;
                float bw    = bSize.X;
                float bh    = bSize.Y;
                var   pos   = Float2.Mod(bSize);

                if (pos.X > 0)
                {
                    pos.X -= bw;
                }
                if (pos.Y > 0)
                {
                    pos.Y -= bh;
                }

                int maxI = Mathf.CeilToInt(Width / bw + 1.0f);
                int maxJ = Mathf.CeilToInt(Height / bh + 1.0f);

                for (int i = 0; i < maxI; i++)
                {
                    for (int j = 0; j < maxJ; j++)
                    {
                        Render2D.DrawTexture(background, new Rectangle(pos.X + i * bw, pos.Y + j * bh, bw, bh), Color.White);
                    }
                }
            }
        }