fix material selection handle paint with transparent textSelectionHandleColor  (#49830)

diff --git a/packages/flutter/lib/src/material/text_selection.dart b/packages/flutter/lib/src/material/text_selection.dart
index 917df18..f1893e1 100644
--- a/packages/flutter/lib/src/material/text_selection.dart
+++ b/packages/flutter/lib/src/material/text_selection.dart
@@ -120,8 +120,10 @@
   void paint(Canvas canvas, Size size) {
     final Paint paint = Paint()..color = color;
     final double radius = size.width/2.0;
-    canvas.drawCircle(Offset(radius, radius), radius, paint);
-    canvas.drawRect(Rect.fromLTWH(0.0, 0.0, radius, radius), paint);
+    final Rect circle = Rect.fromCircle(center: Offset(radius, radius), radius: radius);
+    final Rect point = Rect.fromLTWH(0.0, 0.0, radius, radius);
+    final Path path = Path()..addOval(circle)..addRect(point);
+    canvas.drawPath(path, paint);
   }
 
   @override
diff --git a/packages/flutter/test/material/text_selection_test.dart b/packages/flutter/test/material/text_selection_test.dart
index 377ac46..4799bad 100644
--- a/packages/flutter/test/material/text_selection_test.dart
+++ b/packages/flutter/test/material/text_selection_test.dart
@@ -62,4 +62,39 @@
       expect(materialTextSelectionControls.canSelectAll(key.currentState), false);
     });
   });
+
+  group('material handles', () {
+    testWidgets('draws transparent handle correctly', (WidgetTester tester) async {
+      await tester.pumpWidget(RepaintBoundary(
+        child: Theme(
+          data: ThemeData(
+            textSelectionHandleColor: const Color(0x550000AA),
+          ),
+          isMaterialAppTheme: true,
+          child: Builder(
+            builder: (BuildContext context) {
+              return Container(
+                color: Colors.white,
+                height: 800,
+                width: 800,
+                child: Padding(
+                  padding: const EdgeInsets.symmetric(horizontal: 250),
+                  child: FittedBox(
+                    child: materialTextSelectionControls.buildHandle(
+                      context, TextSelectionHandleType.right, 10.0,
+                    ),
+                  ),
+                ),
+              );
+            },
+          ),
+        ),
+      ));
+
+      await expectLater(
+        find.byType(RepaintBoundary),
+        matchesGoldenFile('transparent_handle.png'),
+      );
+    });
+  });
 }