/// <summary>
        /// On control paint
        /// </summary>
        protected override void OnPaint(PaintEventArgs e)
        {
            if (!Enabled || BackBuffer == null)
            {
                e.Graphics.FillRectangle(SystemBrushes.ControlDark, ClientRectangle);
                return;
            }

            Rectangle src = new Rectangle(0, 0, BackBuffer.Width, BackBuffer.Height);

            using (Bitmap image = BackBuffer.Clone(src, BackBuffer.PixelFormat))
            {
                Point srcPoint = GetTranslatePoint(Point.Empty);
                Size  size     = UseCanvas && _canvas != Size.Empty ? _canvas : _image != null ? _image.Size : BackBuffer.Size;
                AutoScrollMinSize            = new Size(size.Width * _scale, size.Height * _scale);
                e.Graphics.PixelOffsetMode   = PixelOffsetMode.Half;
                e.Graphics.InterpolationMode = InterpolationMode.NearestNeighbor;
                e.Graphics.ScaleTransform(_scale, _scale);
                e.Graphics.DrawImage(image, ClientRectangle, srcPoint.X, srcPoint.Y, ClientSize.Width, ClientSize.Height, GraphicsUnit.Pixel);
                e.Graphics.ResetTransform();
                OnDrawAfterOnPaint(ref e);
            }
        }