diff --git a/lottie-compose/src/main/java/com/airbnb/lottie/compose/LottieAnimation.kt b/lottie-compose/src/main/java/com/airbnb/lottie/compose/LottieAnimation.kt
index bb7a84c..679a6ef 100644
--- a/lottie-compose/src/main/java/com/airbnb/lottie/compose/LottieAnimation.kt
+++ b/lottie-compose/src/main/java/com/airbnb/lottie/compose/LottieAnimation.kt
@@ -4,6 +4,7 @@
 import androidx.annotation.FloatRange
 import androidx.compose.foundation.Canvas
 import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.size
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.mutableStateOf
@@ -17,8 +18,10 @@
 import androidx.compose.ui.layout.ContentScale
 import androidx.compose.ui.layout.ScaleFactor
 import androidx.compose.ui.unit.IntSize
+import androidx.compose.ui.unit.dp
 import com.airbnb.lottie.LottieComposition
 import com.airbnb.lottie.LottieDrawable
+import com.airbnb.lottie.utils.Utils
 import kotlin.math.roundToInt
 
 /**
@@ -73,9 +76,10 @@
 
     if (composition == null || composition.duration == 0f) return Box(modifier)
 
+
     Canvas(
         modifier = modifier
-            .lottieLayout(composition)
+            .size((composition.bounds.width() / Utils.dpScale()).dp, (composition.bounds.height() / Utils.dpScale()).dp)
     ) {
         drawIntoCanvas { canvas ->
             val compositionSize = Size(composition.bounds.width().toFloat(), composition.bounds.height().toFloat())
diff --git a/lottie-compose/src/main/java/com/airbnb/lottie/compose/LottieAnimationLayoutModifier.kt b/lottie-compose/src/main/java/com/airbnb/lottie/compose/LottieAnimationLayoutModifier.kt
deleted file mode 100644
index c5d326d..0000000
--- a/lottie-compose/src/main/java/com/airbnb/lottie/compose/LottieAnimationLayoutModifier.kt
+++ /dev/null
@@ -1,50 +0,0 @@
-package com.airbnb.lottie.compose
-
-import androidx.compose.ui.Modifier
-import androidx.compose.ui.layout.LayoutModifier
-import androidx.compose.ui.layout.Measurable
-import androidx.compose.ui.layout.MeasureResult
-import androidx.compose.ui.layout.MeasureScope
-import androidx.compose.ui.unit.Constraints
-import androidx.compose.ui.unit.constrainHeight
-import androidx.compose.ui.unit.constrainWidth
-import com.airbnb.lottie.LottieComposition
-
-internal fun Modifier.lottieLayout(
-    composition: LottieComposition,
-): Modifier {
-    return this.then(LottieAnimationLayoutModifier(composition))
-}
-
-private class LottieAnimationLayoutModifier(
-    private val composition: LottieComposition,
-) : LayoutModifier {
-    override fun MeasureScope.measure(measurable: Measurable, constraints: Constraints): MeasureResult {
-        val wrappedConstraints = modifyConstraints(constraints)
-        val placeable = measurable.measure(wrappedConstraints)
-        return layout(placeable.width, placeable.height) {
-            placeable.placeRelative(0, 0)
-        }
-    }
-
-    /**
-     * If there is a fixed size on either the width or height, use that.
-     * If there is not, use the composition size but constraint it to the constraints.
-     */
-    private fun modifyConstraints(constraints: Constraints): Constraints {
-        val width = when {
-            constraints.hasFixedWidth -> constraints.maxWidth
-            else -> constraints.constrainWidth(composition.bounds.width())
-        }
-        val height = when {
-            constraints.hasFixedHeight -> constraints.maxHeight
-            else -> constraints.constrainHeight(composition.bounds.height())
-        }
-        return Constraints(
-            minWidth = width,
-            maxWidth = width,
-            minHeight = height,
-            maxHeight = height,
-        )
-    }
-}
\ No newline at end of file
