diff --git a/node_modules/react-native-material-menu/dist/Menu.js b/node_modules/react-native-material-menu/dist/Menu.js
index 64fbf13..beeda72 100644
--- a/node_modules/react-native-material-menu/dist/Menu.js
+++ b/node_modules/react-native-material-menu/dist/Menu.js
@@ -55,7 +55,7 @@ class Menu extends react_1.default.Component {
     };
     // Start menu animation
     onMenuLayout = (e) => {
-        if (this.state.menuState === States.Animating) {
+        if (this.state.menuState === States.Animating || this.state.menuState === States.Hidden) {
             return;
         }
         const { width, height } = e.nativeEvent.layout;
@@ -110,6 +110,7 @@ class Menu extends react_1.default.Component {
         this.props.onRequestClose?.();
     };
     render() {
+
         const { isRTL } = react_native_1.I18nManager;
         const dimensions = react_native_1.Dimensions.get('window');
         const { width: windowWidth } = dimensions;
@@ -134,8 +135,10 @@ class Menu extends react_1.default.Component {
         }
         // Flip by Y axis if menu hits bottom screen border
         if (top > windowHeight - menuHeight - SCREEN_INDENT) {
+            const diff = top - (windowHeight - menuHeight - SCREEN_INDENT);
+            const fraction = (diff / menuHeight);
             transforms.push({
-                translateY: react_native_1.Animated.multiply(menuSizeAnimation.y, -1),
+                translateY: react_native_1.Animated.multiply(menuSizeAnimation.y, -(fraction + 1)),
             });
             top = windowHeight - SCREEN_INDENT;
             top = Math.min(windowHeight - SCREEN_INDENT, top + buttonHeight);
