diff --git a/src/shapes.c b/src/shapes.c
index c6b746e20..f95004747 100644
--- a/src/shapes.c
+++ b/src/shapes.c
@@ -619,59 +619,61 @@ void DrawRectanglePro(Rectangle rec, Vector2 origin, float rotation, Color color
 {
     if (rlCheckBufferLimit(4)) rlglDraw();
 
-    Vector2 bl = { 0 };
-    Vector2 br = { 0 };
-    Vector2 tr = { 0 };
-    Vector2 tl = { 0 };
+    Vector2 bottomLeft = { 0 };
+    Vector2 bottomRight = { 0 };
+    Vector2 topRight = { 0 };
+    Vector2 topLeft = { 0 };
 
     // Only calculate rotation if needed
     if (rotation == 0.0f)
     {
         float x = rec.x - origin.x;
         float y = rec.y - origin.y;
-        bl = (Vector2){ x, y };
-        br = (Vector2){ x, y + rec.height };
-        tr = (Vector2){ x + rec.width, y + rec.height };
-        tl = (Vector2){ x + rec.width, y };
+        bottomLeft = (Vector2){ x, y };
+        bottomRight = (Vector2){ x, y + rec.height };
+        topRight = (Vector2){ x + rec.width, y + rec.height };
+        topLeft = (Vector2){ x + rec.width, y };
     }
     else
     {
-        float sinRotation = sinf(rotation * DEG2RAD);
-        float cosRotation = cosf(rotation * DEG2RAD);
+        float sinRotation = sinf(rotation*DEG2RAD);
+        float cosRotation = cosf(rotation*DEG2RAD);
         float x = rec.x;
         float y = rec.y;
         float dx = -origin.x;
         float dy = -origin.y;
 
-        bl.x = x + dx * cosRotation - (dy + rec.height) * sinRotation;
-        bl.y = y + dx * sinRotation + (dy + rec.height) * cosRotation;
+        bottomLeft.x = x + dx*cosRotation - (dy + rec.height)*sinRotation;
+        bottomLeft.y = y + dx*sinRotation + (dy + rec.height)*cosRotation;
 
-        br.x = x + (dx + rec.width) * cosRotation - (dy + rec.height) * sinRotation;
-        br.y = y + (dx + rec.width) * sinRotation + (dy + rec.height) * cosRotation;
+        bottomRight.x = x + (dx + rec.width)*cosRotation - (dy + rec.height)*sinRotation;
+        bottomRight.y = y + (dx + rec.width)*sinRotation + (dy + rec.height)*cosRotation;
 
-        tr.x = x + (dx + rec.width) * cosRotation - dy * sinRotation;
-        tr.y = y + (dx + rec.width) * sinRotation + dy * cosRotation;
+        topRight.x = x + (dx + rec.width)*cosRotation - dy*sinRotation;
+        topRight.y = y + (dx + rec.width)*sinRotation + dy*cosRotation;
 
-        tl.x = x + dx * cosRotation - dy * sinRotation;
-        tl.y = y + dx * sinRotation + dy * cosRotation;
+        topLeft.x = x + dx*cosRotation - dy*sinRotation;
+        topLeft.y = y + dx*sinRotation + dy*cosRotation;
     }
 
     rlEnableTexture(GetShapesTexture().id);
     rlBegin(RL_QUADS);
+    
         rlNormal3f(0.0f, 0.0f, 1.0f);
         rlColor4ub(color.r, color.g, color.b, color.a);
 
         rlTexCoord2f(GetShapesTextureRec().x/GetShapesTexture().width, GetShapesTextureRec().y/GetShapesTexture().height);
-        rlVertex2f(bl.x, bl.y);
+        rlVertex2f(bottomLeft.x, bottomLeft.y);
 
         rlTexCoord2f(GetShapesTextureRec().x/GetShapesTexture().width, (GetShapesTextureRec().y + GetShapesTextureRec().height)/GetShapesTexture().height);
-        rlVertex2f(br.x, br.y);
+        rlVertex2f(bottomRight.x, bottomRight.y);
 
         rlTexCoord2f((GetShapesTextureRec().x + GetShapesTextureRec().width)/GetShapesTexture().width, (GetShapesTextureRec().y + GetShapesTextureRec().height)/GetShapesTexture().height);
-        rlVertex2f(tr.x, tr.y);
+        rlVertex2f(topRight.x, topRight.y);
 
         rlTexCoord2f((GetShapesTextureRec().x + GetShapesTextureRec().width)/GetShapesTexture().width, GetShapesTextureRec().y/GetShapesTexture().height);
-        rlVertex2f(tl.x, tl.y);
+        rlVertex2f(topLeft.x, topLeft.y);
+        
     rlEnd();
     rlDisableTexture();
 }
diff --git a/src/textures.c b/src/textures.c
index ccab3bef2..6debe1a04 100644
--- a/src/textures.c
+++ b/src/textures.c
@@ -703,7 +703,7 @@ Image GenImageCellular(int width, int height, int tileSize)
 
     int seedsPerRow = width/tileSize;
     int seedsPerCol = height/tileSize;
-    int seedsCount = seedsPerRow * seedsPerCol;
+    int seedsCount = seedsPerRow*seedsPerCol;
 
     Vector2 *seeds = (Vector2 *)RL_MALLOC(seedsCount*sizeof(Vector2));
 
@@ -1811,7 +1811,7 @@ void ImageColorTint(Image *image, Color color)
     {
         for (int x = 0; x < image->width; x++)
         {
-            int index = y * image->width + x;
+            int index = y*image->width + x;
             unsigned char r = (unsigned char)(((float)pixels[index].r/255*cR)*255.0f);
             unsigned char g = (unsigned char)(((float)pixels[index].g/255*cG)*255.0f);
             unsigned char b = (unsigned char)(((float)pixels[index].b/255*cB)*255.0f);
@@ -3200,69 +3200,111 @@ void DrawTexturePro(Texture2D texture, Rectangle source, Rectangle dest, Vector2
         if (source.width < 0) { flipX = true; source.width *= -1; }
         if (source.height < 0) source.y -= source.height;
 
-        Vector2 bl = { 0 };
-        Vector2 br = { 0 };
-        Vector2 tr = { 0 };
-        Vector2 tl = { 0 };
+        Vector2 bottomLeft = { 0 };
+        Vector2 bottomRight = { 0 };
+        Vector2 topRight = { 0 };
+        Vector2 topLeft = { 0 };
 
         // Only calculate rotation if needed
         if (rotation == 0.0f)
         {
             float x = dest.x - origin.x;
             float y = dest.y - origin.y;
-            bl = (Vector2){ x, y };
-            br = (Vector2){ x, y + dest.height };
-            tr = (Vector2){ x + dest.width, y + dest.height };
-            tl = (Vector2){ x + dest.width, y };
+            bottomLeft = (Vector2){ x, y };
+            bottomRight = (Vector2){ x, y + dest.height };
+            topRight = (Vector2){ x + dest.width, y + dest.height };
+            topLeft = (Vector2){ x + dest.width, y };
         }
         else
         {
-            float sinRotation = sinf(rotation * DEG2RAD);
-            float cosRotation = cosf(rotation * DEG2RAD);
+            float sinRotation = sinf(rotation*DEG2RAD);
+            float cosRotation = cosf(rotation*DEG2RAD);
             float x = dest.x;
             float y = dest.y;
             float dx = -origin.x;
             float dy = -origin.y;
 
-            bl.x = x + dx * cosRotation - (dy + dest.height) * sinRotation;
-            bl.y = y + dx * sinRotation + (dy + dest.height) * cosRotation;
+            bottomLeft.x = x + dx*cosRotation - (dy + dest.height)*sinRotation;
+            bottomLeft.y = y + dx*sinRotation + (dy + dest.height)*cosRotation;
 
-            br.x = x + (dx + dest.width) * cosRotation - (dy + dest.height) * sinRotation;
-            br.y = y + (dx + dest.width) * sinRotation + (dy + dest.height) * cosRotation;
+            bottomRight.x = x + (dx + dest.width)*cosRotation - (dy + dest.height) *sinRotation;
+            bottomRight.y = y + (dx + dest.width)*sinRotation + (dy + dest.height)*cosRotation;
 
-            tr.x = x + (dx + dest.width) * cosRotation - dy * sinRotation;
-            tr.y = y + (dx + dest.width) * sinRotation + dy * cosRotation;
+            topRight.x = x + (dx + dest.width)*cosRotation - dy*sinRotation;
+            topRight.y = y + (dx + dest.width)*sinRotation + dy*cosRotation;
 
-            tl.x = x + dx * cosRotation - dy * sinRotation;
-            tl.y = y + dx * sinRotation + dy * cosRotation;
+            topLeft.x = x + dx*cosRotation - dy*sinRotation;
+            topLeft.y = y + dx*sinRotation + dy*cosRotation;
         }
 
         rlEnableTexture(texture.id);
         rlBegin(RL_QUADS);
+        
             rlColor4ub(tint.r, tint.g, tint.b, tint.a);
             rlNormal3f(0.0f, 0.0f, 1.0f);                          // Normal vector pointing towards viewer
 
             // Bottom-left corner for texture and quad
             if (flipX) rlTexCoord2f((source.x + source.width)/width, source.y/height);
             else rlTexCoord2f(source.x/width, source.y/height);
-            rlVertex2f(bl.x, bl.y);
+            rlVertex2f(bottomLeft.x, bottomLeft.y);
 
             // Bottom-right corner for texture and quad
             if (flipX) rlTexCoord2f((source.x + source.width)/width, (source.y + source.height)/height);
             else rlTexCoord2f(source.x/width, (source.y + source.height)/height);
-            rlVertex2f(br.x, br.y);
+            rlVertex2f(bottomRight.x, bottomRight.y);
 
             // Top-right corner for texture and quad
             if (flipX) rlTexCoord2f(source.x/width, (source.y + source.height)/height);
             else rlTexCoord2f((source.x + source.width)/width, (source.y + source.height)/height);
-            rlVertex2f(tr.x, tr.y);
+            rlVertex2f(topRight.x, topRight.y);
 
             // Top-left corner for texture and quad
             if (flipX) rlTexCoord2f(source.x/width, source.y/height);
             else rlTexCoord2f((source.x + source.width)/width, source.y/height);
-            rlVertex2f(tl.x, tl.y);
+            rlVertex2f(topLeft.x, topLeft.y);
+            
         rlEnd();
         rlDisableTexture();
+        
+        // NOTE: Vertex position can be transformed using matrices
+        // but the process is way more costly than just calculating
+        // the vertex positions manually, like done above.
+        // I leave here the old implementation for educational pourposes,
+        // just in case someone wants to do some performance test
+        /*
+        rlEnableTexture(texture.id);
+        rlPushMatrix();
+            rlTranslatef(dest.x, dest.y, 0.0f);
+            if (rotation != 0.0f) rlRotatef(rotation, 0.0f, 0.0f, 1.0f);
+            rlTranslatef(-origin.x, -origin.y, 0.0f);
+
+            rlBegin(RL_QUADS);
+                rlColor4ub(tint.r, tint.g, tint.b, tint.a);
+                rlNormal3f(0.0f, 0.0f, 1.0f);                          // Normal vector pointing towards viewer
+
+                // Bottom-left corner for texture and quad
+                if (flipX) rlTexCoord2f((source.x + source.width)/width, source.y/height);
+                else rlTexCoord2f(source.x/width, source.y/height);
+                rlVertex2f(0.0f, 0.0f);
+
+                // Bottom-right corner for texture and quad
+                if (flipX) rlTexCoord2f((source.x + source.width)/width, (source.y + source.height)/height);
+                else rlTexCoord2f(source.x/width, (source.y + source.height)/height);
+                rlVertex2f(0.0f, dest.height);
+
+                // Top-right corner for texture and quad
+                if (flipX) rlTexCoord2f(source.x/width, (source.y + source.height)/height);
+                else rlTexCoord2f((source.x + source.width)/width, (source.y + source.height)/height);
+                rlVertex2f(dest.width, dest.height);
+
+                // Top-left corner for texture and quad
+                if (flipX) rlTexCoord2f(source.x/width, source.y/height);
+                else rlTexCoord2f((source.x + source.width)/width, source.y/height);
+                rlVertex2f(dest.width, 0.0f);
+            rlEnd();
+        rlPopMatrix();
+        rlDisableTexture();
+        */
     }
 }