diff --git a/src/rlgl.h b/src/rlgl.h
index 40e7b4785..e38642ec9 100644
--- a/src/rlgl.h
+++ b/src/rlgl.h
@@ -3000,7 +3000,8 @@ unsigned int rlLoadTexture(const void *data, int width, int height, int format,
     int mipOffset = 0;          // Mipmap data offset, only used for tracelog
 
     // NOTE: Added pointer math separately from function to avoid UBSAN complaining
-    unsigned char *dataPtr = (unsigned char *)data;
+    unsigned char *dataPtr = NULL;
+    if (data != NULL) dataPtr = (unsigned char *)data;
 
     // Load the different mipmap levels
     for (int i = 0; i < mipmapCount; i++)
@@ -3040,7 +3041,7 @@ unsigned int rlLoadTexture(const void *data, int width, int height, int format,
         mipWidth /= 2;
         mipHeight /= 2;
         mipOffset += mipSize;       // Increment offset position to next mipmap
-        dataPtr += mipSize;         // Increment data pointer to next mipmap
+        if (data != NULL) dataPtr += mipSize;         // Increment data pointer to next mipmap
 
         // Security check for NPOT textures
         if (mipWidth < 1) mipWidth = 1;