diff --git a/Perspex.Controls/ProgressBar.cs b/Perspex.Controls/ProgressBar.cs
index 2afbd3bc87..f14751a0e7 100644
--- a/Perspex.Controls/ProgressBar.cs
+++ b/Perspex.Controls/ProgressBar.cs
@@ -16,13 +16,15 @@ namespace Perspex.Controls
public class ProgressBar : RangeBase
{
///
+ ///
+ private Border indicator;
protected override Size ArrangeOverride(Size finalSize)
{
var size = base.ArrangeOverride(finalSize);
- var b = this.Bounds;
-
- var indicator = this.GetTemplateChild("PART_Indicator");
- indicator.Width = Math.Max(this.Minimum, finalSize.Width * (this.Value / this.Maximum));
+ this.indicator = this.indicator ?? this.GetTemplateChild("PART_Indicator");
+
+ double percent = this.Maximum == this.Minimum ? 1.0 : (this.Value - this.Minimum) / (this.Maximum - this.Minimum);
+ indicator.Width = finalSize.Width * percent;
return size;
}