diff --git a/CMakeLists.txt b/CMakeLists.txt
index 62e9b72c..99b5201f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -96,7 +96,7 @@ if (PROJECT_IS_TOP_LEVEL AND NOT GEODE_BUILDING_DOCS)
 	set(TULIP_LINK_SOURCE ON)
 endif()
 set(CMAKE_WARN_DEPRECATED OFF CACHE BOOL "" FORCE)
-CPMAddPackage("gh:geode-sdk/TulipHook#2e4cb5a")
+CPMAddPackage("gh:geode-sdk/TulipHook#3423a29")
 set(CMAKE_WARN_DEPRECATED ON CACHE BOOL "" FORCE)
 
 # Silence warnings from dependencies
diff --git a/cmake/Platform.cmake b/cmake/Platform.cmake
index 89f4fa89..22602b4b 100644
--- a/cmake/Platform.cmake
+++ b/cmake/Platform.cmake
@@ -46,6 +46,7 @@ elseif (GEODE_TARGET_PLATFORM STREQUAL "MacOS")
 
 	target_link_libraries(${PROJECT_NAME} INTERFACE
 		"-framework Cocoa"
+		"-framework OpenGL"
 		${CURL_LIBRARIES}
 		${GEODE_LOADER_PATH}/include/link/libfmod.dylib
 	)
diff --git a/loader/src/hooks/MenuLayer.cpp b/loader/src/hooks/MenuLayer.cpp
index 4942a0ec..869d1bce 100644
--- a/loader/src/hooks/MenuLayer.cpp
+++ b/loader/src/hooks/MenuLayer.cpp
@@ -208,14 +208,14 @@ struct CustomMenuLayer : Modify<CustomMenuLayer, MenuLayer> {
         
     #ifdef GEODE_IS_DESKTOP
 
-        (void) utils::file::createDirectoryAll(dirs::getGeodeDir() / "update" / "resources");
+        (void) utils::file::createDirectoryAll(dirs::getGeodeDir() / "update" / "resources" / "geode.loader");
 
         createQuickPopup(
             "Missing Textures",
             "You appear to be missing textures, and the automatic texture fixer "
             "hasn't fixed the issue.\n"
             "Download <cy>resources.zip</c> from the latest release on GitHub, "
-            "and <cy>unzip its contents</c> into <cb>geode/update/resources</c>.\n"
+            "and <cy>unzip its contents</c> into <cb>geode/update/resources/geode.loader</c>.\n"
             "Afterwards, <cg>restart the game</c>.\n"
             "You may also continue without installing resources, but be aware that "
             "you won't be able to open <cr>the Geode menu</c>.",