diff --git a/api/src/engine/connectors/exareme/handlers/algorithms/PCA.handler.spec.ts b/api/src/engine/connectors/exareme/handlers/algorithms/PCA.handler.spec.ts
index f390eea800eb08fb341b1ee4b6e7158791855702..a7af56efcc46540e8565e6130e5d7c70e420ee8e 100644
--- a/api/src/engine/connectors/exareme/handlers/algorithms/PCA.handler.spec.ts
+++ b/api/src/engine/connectors/exareme/handlers/algorithms/PCA.handler.spec.ts
@@ -84,7 +84,10 @@ describe('PCA result handler', () => {
     exp.results.forEach((it) => {
       if (it['matrix']) {
         const heatmap = it as HeatMapResult;
-        expect(heatmap.matrix).toEqual(data.eigen_vecs);
+        const matrix = data.eigen_vecs[0].map(
+          (_, i) => data.eigen_vecs.map((row) => row[i]), // reverse matrix as we want row-major order
+        );
+        expect(heatmap.matrix).toEqual(matrix);
         expect(heatmap.yAxis.categories).toEqual(exp.variables);
       }
     });
diff --git a/api/src/engine/connectors/exareme/handlers/algorithms/PCA.handler.ts b/api/src/engine/connectors/exareme/handlers/algorithms/PCA.handler.ts
index 3278962199e512fa04c3a2b7c55bd1339447b6c5..64ff970285259fd69147fe2ff8fc0b3ca9eab668 100644
--- a/api/src/engine/connectors/exareme/handlers/algorithms/PCA.handler.ts
+++ b/api/src/engine/connectors/exareme/handlers/algorithms/PCA.handler.ts
@@ -42,7 +42,13 @@ export default class PCAHandler extends BaseHandler {
       },
     };
 
-    if (matrix) exp.results.push(heatMapChart);
+    if (matrix && matrix.length > 0) {
+      heatMapChart.matrix = matrix[0].map(
+        (_, i) => matrix.map((row) => row[i]), // reverse matrix as we want row-major order
+      );
+    }
+
+    if (heatMapChart.matrix) exp.results.push(heatMapChart);
 
     this.next?.handle(exp, data);
   }