private void RenderedImagePanel_MouseClick(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Middle)
            {
                Point loc             = getPointOnImage(e.Location, EstimateProp.Floor);
                int   gs              = Options.Get.GridSize;
                int   xMin            = (loc.X / gs) * gs;
                int   xMax            = xMin + gs;
                int   yMin            = (loc.Y / gs) * gs;
                int   yMax            = yMin + gs;
                var   newGridMaskClip = new Rectangle(new Point(xMin, yMin), new Point(xMin, yMin).CalculateSize(new Point(xMax, yMax)));

                // If they click it again, we disable it.
                if (this.gridMaskClip != null)
                {
                    if (this.gridMaskClip.Value.X == newGridMaskClip.X)
                    {
                        if (this.gridMaskClip.Value.Y == newGridMaskClip.Y)
                        {
                            this.gridMaskClip = null;
                            Refresh();
                            return;
                        }
                    }
                }

                this.gridMaskClip = newGridMaskClip;
                Refresh();
            }
            else if (e.Button == MouseButtons.Right)
            {
                Point loc            = getPointOnImage(e.Location, EstimateProp.Floor);
                Color cFromPreRender = MainForm.Self.PreRenderedImage.GetPixelSafely(loc.X, loc.Y);
                Color cFromBlueprint = this.image.GetColor(loc.X, loc.Y);

                #region Coordinates (XYZ)
                if (Options.Get.IsSideView)
                {
                    this.ts_xyz.Text = $"XYZ : ({loc.X}, {(this.image.Mapper.GetYLength(true) - loc.Y)}, *)";
                }
                else
                {
                    this.ts_xyz.Text = $"XYZ : ({loc.X}, *, {loc.Y})";
                }
                #endregion

                #region Material name
                Material[] ms = this.image.Mapper.GetMaterialsAt(loc.X, loc.Y);
                this.ts_MaterialName.Text = $"Materials: \r\n{string.Join("\r\n", ms.Select(x => x.GetBlockNameAndData(true)))}";
                #endregion

                #region Average color
                this.averageColorCodeToolStripMenuItem.Text = "AvgColor: #" + cFromBlueprint.R.ToString("X2") + cFromBlueprint.G.ToString("X2") + cFromBlueprint.B.ToString("X2");
                this.rGBAToolStripMenuItem.Text             = $"RGBA: ({cFromBlueprint.R}, {cFromBlueprint.G}, {cFromBlueprint.B}, {cFromBlueprint.A})";
                #endregion

                #region Replacements list
                List <Color> matches = Materials.FindBestMatches(Materials.ColorMap.Keys.ToList(), cFromPreRender, Math.Min(Materials.ColorMap.Keys.Count, 30));
                this.replaceMenuItems_1.DropDownItems.Clear();
                this.replaceMenuItems_2.DropDownItems.Clear();
                this.replaceMenuItems_3.DropDownItems.Clear();
                int size = Constants.TextureSize * 4;
                for (int matchIndex = 0; matchIndex < matches.Count; matchIndex++)
                {
                    var match = matches[matchIndex];

                    if (Materials.ColorMap.TryGetValue(match, out Material[] materials))