private void pctbx_PaletteEditor_DoubleClick(object sender, EventArgs e)
        {
            Point formScreenCoordLoc   = pctbx_PaletteEditor.PointToScreen(new Point(0, 0));
            Point convertedMouseCoords = new Point(Control.MousePosition.X - formScreenCoordLoc.X, Control.MousePosition.Y - formScreenCoordLoc.Y);
            int   newCSX = convertedMouseCoords.X - PaletteEditorPaletteX;

            int newCSLowerBound, newCSUpperBound;
            int LowerBoundCS = 0, UpperBoundCS = PaletteColorStops.Count - 1;

            if (newCSX >= 0 && newCSX < pctbx_PaletteEditor.Width)
            {
                int LowerBound = 0;
                for (int clrStp = 0; clrStp < PaletteColorStops.Count; clrStp++)
                {
                    if (PaletteColorStops[clrStp].CSLocation <newCSX && PaletteColorStops[clrStp].CSLocation> LowerBound)
                    {
                        LowerBound   = PaletteColorStops[clrStp].CSLocation;
                        LowerBoundCS = clrStp;
                    }
                }
                newCSLowerBound = LowerBound + (int)(PaletteEditorPaletteWidth * 0.02);


                int UpperBound = pctbx_PaletteEditor.Width;
                for (int clrStp = 0; clrStp < PaletteColorStops.Count; clrStp++)
                {
                    if (PaletteColorStops[clrStp].CSLocation > newCSX && PaletteColorStops[clrStp].CSLocation < UpperBound)
                    {
                        UpperBound   = PaletteColorStops[clrStp].CSLocation;
                        UpperBoundCS = clrStp;
                    }
                }
                newCSUpperBound = UpperBound - (int)(PaletteEditorPaletteWidth * 0.02);

                if (newCSLowerBound < newCSX && newCSUpperBound > newCSX && UpperBoundCS > LowerBoundCS)
                {
                    decimal   newColorStopLocation = (decimal)newCSX / NumOfDivisionsFromZero;
                    Color     newCSColor           = ((Bitmap)pctbx_PaletteEditor.Image).GetPixel(newCSX, (int)(pctbx_PaletteEditor.Image.Height / 2));
                    int       ColorStopLocation    = ((int)(newColorStopLocation * NumOfDivisionsFromZero) * PaletteEditorDisplayColorWidthInPixels) + pctbx_PaletteEditor.Location.X - ColorStopOffset + PaletteEditorPaletteX;
                    ColorStop newCS = new ColorStop(100, ColorStopLocation, newCSColor, false,
                                                    new EventHandler(ColorStop_Click), new EventHandler(ColorStop_DoubleClick),
                                                    new MouseEventHandler(ColorStop_MouseDown), new MouseEventHandler(ColorStop_MouseMove));

                    PaletteColorStops.Insert(UpperBoundCS, newCS);
                    if (PaletteManager.CurrentPalette.HSL)
                    {
                        PaletteColor pc = new PaletteColor(newColorStopLocation, (decimal)newCSColor.R, (decimal)newCSColor.G, (decimal)newCSColor.B);
                        pc.convertToHSL();
                        PaletteManager.CurrentPalette.Insert(UpperBoundCS, pc);
                    }
                    else
                    {
                        PaletteColor pc = new PaletteColor(newColorStopLocation, (decimal)newCSColor.R, (decimal)newCSColor.G, (decimal)newCSColor.B);
                        PaletteManager.CurrentPalette.Insert(UpperBoundCS, pc);
                    }

                    int id = 0;
                    foreach (ColorStop cs in PaletteColorStops)
                    {
                        cs.ID         = id;
                        cs.Image.Name = id.ToString();
                        id++;
                    }

                    pctbx_PaletteEditor.Controls.Add(PaletteColorStops[UpperBoundCS].Image);
                    SelectedColorStop = UpperBoundCS;
                    selectColorStop();
                }
            }
        }