| 
					
				 | 
			
			
				@@ -83,6 +83,20 @@ namespace Avalonia.Rendering.SceneGraph 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         public override bool HitTest(Point p) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (!Transform.HasInverse) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            p *= Transform.Invert(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var halfThickness = Pen.Thickness / 2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var minX = Math.Min(P1.X, P2.X) - halfThickness; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var maxX = Math.Max(P1.X, P2.X) + halfThickness; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var minY = Math.Min(P1.Y, P2.Y) - halfThickness; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var maxY = Math.Max(P1.Y, P2.Y) + halfThickness; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (p.X < minX || p.X > maxX || p.Y < minY || p.Y > maxY) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var a = P1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var b = P2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -100,7 +114,7 @@ namespace Avalonia.Rendering.SceneGraph 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var dot2 = Vector.Dot(a - b, bp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (dot2 < 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                return bp.Length <= Pen.Thickness / 2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return bp.Length <= halfThickness; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var bXaX = b.X - a.X; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var bYaY = b.Y - a.Y; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -108,7 +122,7 @@ namespace Avalonia.Rendering.SceneGraph 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var distance = (bXaX * (p.Y - a.Y) - bYaY * (p.X - a.X)) / 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            (Math.Sqrt(bXaX * bXaX + bYaY * bYaY)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return Math.Abs(distance) <= Pen.Thickness / 2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return Math.Abs(distance) <= halfThickness; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |