To reproduce: BarSeries barSeries = new BarSeries("Performance", "RepresentativeName"); barSeries.Name = "Q1"; barSeries.CombineMode = ChartSeriesCombineMode.Stack; barSeries.DataPoints.Add(new CategoricalDataPoint(177, "Harley")); barSeries.DataPoints.Add(new CategoricalDataPoint(128, "White")); barSeries.DataPoints.Add(new CategoricalDataPoint(143, "Smith")); barSeries.DataPoints.Add(new CategoricalDataPoint(111, "Jones")); barSeries.DataPoints.Add(new CategoricalDataPoint(118, "Marshall")); this.radChartView1.Series.Add(barSeries); BarSeries barSeries2 = new BarSeries("Performance", "RepresentativeName"); barSeries2.Name = "Q2"; barSeries2.CombineMode = ChartSeriesCombineMode.Stack; barSeries2.DataPoints.Add(new CategoricalDataPoint(153, "Harley")); barSeries2.DataPoints.Add(new CategoricalDataPoint(141, "White")); barSeries2.DataPoints.Add(new CategoricalDataPoint(130, "Smith")); barSeries2.DataPoints.Add(new CategoricalDataPoint(88, "Jones")); barSeries2.DataPoints.Add(new CategoricalDataPoint(109, "Marshall")); this.radChartView1.Series.Add(barSeries2); BarSeries barSeries3 = new BarSeries("Performance", "RepresentativeName"); barSeries3.Name = "Q3"; barSeries3.CombineMode = ChartSeriesCombineMode.Stack; barSeries3.DataPoints.Add(new CategoricalDataPoint(153, "Harley")); barSeries3.DataPoints.Add(new CategoricalDataPoint(141, "White")); barSeries3.DataPoints.Add(new CategoricalDataPoint(130, "Smith")); barSeries3.DataPoints.Add(new CategoricalDataPoint(88, "Jones")); barSeries3.DataPoints.Add(new CategoricalDataPoint(109, "Marshall")); this.radChartView1.Series.Add(barSeries3); this.radChartView1.ShowTrackBall = true; Note: the trackball labels should be displayed in the order the series are displayed in the chart view. Workaround: private void ChartTrackballController_TextNeeded(object sender, TextNeededEventArgs e) { string pattern = " \\d+.?\\d* "; StringBuilder sb = new StringBuilder("<html>"); List<DataPointInfo> points = new List<DataPointInfo>(); foreach (DataPointInfo dp in e.Points) { points.Add(dp); } points.Reverse(); foreach (DataPointInfo dp in points) { Color pointColor = this.GetColorForDataPoint(dp.Series, dp.DataPoint); string color = string.Format("{0},{1},{2},{3}", pointColor.A, pointColor.R, pointColor.G, pointColor.B); sb.AppendFormat("<color={0}>{1}", color, string.Format("{0} {1}", dp.Series.Name, ((CategoricalDataPoint)dp.DataPoint).Value)); sb.AppendLine(); } e.Text = sb.ToString(); } protected virtual Color GetColorForDataPoint(ChartSeries series, DataPoint point) { if (series is IndicatorBase) { return series.BorderColor; } foreach (UIChartElement element in series.Children) { DataPointElement pointElement = element as DataPointElement; if (pointElement != null) { if (pointElement.DataPoint.Equals(point)) { if (pointElement.BackColor.A > 0) { return pointElement.BackColor; } else { return pointElement.BorderColor; } } } } return Color.Black; }