diff --git a/dev/tools/gen_defaults/lib/progress_indicator_template.dart b/dev/tools/gen_defaults/lib/progress_indicator_template.dart
index 896be2e..5f51ea4 100644
--- a/dev/tools/gen_defaults/lib/progress_indicator_template.dart
+++ b/dev/tools/gen_defaults/lib/progress_indicator_template.dart
@@ -17,8 +17,6 @@
   final BuildContext context;
   late final ColorScheme _colors = Theme.of(context).colorScheme;
 
-  static const double circularProgressIndicatorSize = ${tokens['md.comp.circular-progress-indicator.size']};
-
   @override
   Color get color => ${componentColor('md.comp.circular-progress-indicator.active-indicator')};
 }
diff --git a/packages/flutter/lib/src/material/progress_indicator.dart b/packages/flutter/lib/src/material/progress_indicator.dart
index 9673a09..dd86f96 100644
--- a/packages/flutter/lib/src/material/progress_indicator.dart
+++ b/packages/flutter/lib/src/material/progress_indicator.dart
@@ -590,38 +590,26 @@
       : _CircularProgressIndicatorDefaultsM2(context);
     final Color? trackColor = widget.backgroundColor ?? ProgressIndicatorTheme.of(context).circularTrackColor;
 
-    Widget progressIndicator = Container(
-      constraints: const BoxConstraints(
-        minWidth: _kMinCircularProgressIndicatorSize,
-        minHeight: _kMinCircularProgressIndicatorSize,
-      ),
-      child: CustomPaint(
-        painter: _CircularProgressIndicatorPainter(
-          backgroundColor: trackColor,
-          valueColor: widget._getValueColor(context, defaultColor: defaults.color),
-          value: widget.value, // may be null
-          headValue: headValue, // remaining arguments are ignored if widget.value is not null
-          tailValue: tailValue,
-          offsetValue: offsetValue,
-          rotationValue: rotationValue,
-          strokeWidth: widget.strokeWidth,
-        ),
-      ),
-    );
-
-    if (Theme.of(context).useMaterial3) {
-      progressIndicator = SizedBox(
-        height: _CircularProgressIndicatorDefaultsM3.circularProgressIndicatorSize,
-        width: _CircularProgressIndicatorDefaultsM3.circularProgressIndicatorSize,
-        child: Center(
-          child: progressIndicator
-        ),
-      );
-    }
-
     return widget._buildSemanticsWrapper(
       context: context,
-      child: progressIndicator,
+      child: Container(
+        constraints: const BoxConstraints(
+          minWidth: _kMinCircularProgressIndicatorSize,
+          minHeight: _kMinCircularProgressIndicatorSize,
+        ),
+        child: CustomPaint(
+          painter: _CircularProgressIndicatorPainter(
+            backgroundColor: trackColor,
+            valueColor: widget._getValueColor(context, defaultColor: defaults.color),
+            value: widget.value, // may be null
+            headValue: headValue, // remaining arguments are ignored if widget.value is not null
+            tailValue: tailValue,
+            offsetValue: offsetValue,
+            rotationValue: rotationValue,
+            strokeWidth: widget.strokeWidth,
+          ),
+        ),
+      ),
     );
   }
 
@@ -929,8 +917,6 @@
   final BuildContext context;
   late final ColorScheme _colors = Theme.of(context).colorScheme;
 
-  static const double circularProgressIndicatorSize = 48.0;
-
   @override
   Color get color => _colors.primary;
 }
diff --git a/packages/flutter/test/material/progress_indicator_test.dart b/packages/flutter/test/material/progress_indicator_test.dart
index 96bc89d..baf76a9 100644
--- a/packages/flutter/test/material/progress_indicator_test.dart
+++ b/packages/flutter/test/material/progress_indicator_test.dart
@@ -1000,7 +1000,7 @@
     expect((wrappedTheme as ProgressIndicatorTheme).data, themeData);
   });
 
-  testWidgets('default size of CircularProgressIndicator is 48x48 - M3', (WidgetTester tester) async {
+  testWidgets('default size of CircularProgressIndicator is 36x36 - M3', (WidgetTester tester) async {
     await tester.pumpWidget(
       MaterialApp(
         theme: theme.copyWith(useMaterial3: true),
@@ -1012,7 +1012,7 @@
       ),
     );
 
-    expect(tester.getSize(find.byType(CircularProgressIndicator)), const Size(48, 48));
+    expect(tester.getSize(find.byType(CircularProgressIndicator)), const Size(36, 36));
   });
 }
 
