public override void Deserialize(XElement element)
        {
            if (element.Element("transitions") != null)
            {
                XElement[] elements =
                    element.Element("transitions").Descendants("transition")
                        .OrderBy(x => (int) x.Attribute("threshold"))
                        .ToArray();

                for (int i = 0; i < elements.Length; i++)
                {
                    float val = 100f;
                    bool parsed = false;

                    //We support threshold values in the 0 - 1 range, or the 0 - 100% range.
                    //We'll assume anything <= 1.0 is the former.
                    //If it's the 0 - 100% range then convert the number!
                    if (elements[i].Attribute("threshold") != null)
                    {
                        parsed = float.TryParse(elements[i].Attribute("threshold").Value, NumberStyles.Float,
                                                CultureInfo.InvariantCulture, out val);

                        if (parsed && val > 1.0f)
                            val /= 100;
                        else if (!parsed)
                            val = 1.0f;
                            
                    }

                    

                    Color color = new Color();

                    if (elements[i].Element("color") != null)
                        color = color.ConvertColorFromString(elements[i].Element("color").Value);
                    else
                        color = Color.HotPink;

                    transitionThresholds.Add(val);
                    colors.Add(color);
                }
            }

            base.Deserialize(element);
        }