diff --git a/core/src/main/java/se/su/dsv/scipro/report/GradingReportTemplate.java b/core/src/main/java/se/su/dsv/scipro/report/GradingReportTemplate.java
index 76ebe71687..c1d00f924a 100644
--- a/core/src/main/java/se/su/dsv/scipro/report/GradingReportTemplate.java
+++ b/core/src/main/java/se/su/dsv/scipro/report/GradingReportTemplate.java
@@ -81,6 +81,10 @@ public class GradingReportTemplate extends DomainObject {
         this.validFrom = validFrom;
     }
 
+    public int getMaxPoints() {
+        return getCriteria().stream().mapToInt(GradingCriterionTemplate::getMaxPoints).sum();
+    }
+
     // ----------------------------------------------------------------------------------
     // Properties (Getters and Setters)
     // ----------------------------------------------------------------------------------
diff --git a/view/src/main/java/se/su/dsv/scipro/grading/TemplatePanel.java b/view/src/main/java/se/su/dsv/scipro/grading/TemplatePanel.java
index 3600223398..1e66eeca5a 100644
--- a/view/src/main/java/se/su/dsv/scipro/grading/TemplatePanel.java
+++ b/view/src/main/java/se/su/dsv/scipro/grading/TemplatePanel.java
@@ -3,9 +3,8 @@ package se.su.dsv.scipro.grading;
 import jakarta.inject.Inject;
 import java.io.Serializable;
 import java.time.LocalDate;
-import java.util.Arrays;
+import java.util.ArrayList;
 import java.util.List;
-import java.util.stream.Collectors;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.list.ListItem;
@@ -14,7 +13,6 @@ import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.model.IModel;
 import se.su.dsv.scipro.project.Project;
 import se.su.dsv.scipro.report.GradeLimit;
-import se.su.dsv.scipro.report.GradingCriterionTemplate;
 import se.su.dsv.scipro.report.GradingReportTemplate;
 import se.su.dsv.scipro.system.DegreeType;
 import se.su.dsv.scipro.system.ProjectType;
@@ -122,20 +120,15 @@ public class TemplatePanel extends Panel {
     private List<GradeWithPointRange> getGradeWithPointRanges(ProjectType projectType) {
         GradingReportTemplate grt = gradingReportTemplateService.getCurrentTemplate(projectType);
         GradeLimit[] gradeLimits = grt.getGradeLimits().toArray(GradeLimit[]::new);
-        List<GradeWithPointRange> list = Arrays.stream(gradeLimits)
-            .map(gradeLimit -> new GradeWithPointRange(gradeLimit.getGrade(), gradeLimit.getLowerLimit()))
-            .collect(Collectors.toList());
+        List<GradeWithPointRange> list = new ArrayList<>();
 
-        for (int i = 1; i < list.size(); i++) {
-            list.get(i).setUpperLimit(gradeLimits[i - 1].getLowerLimit() - 1);
-        }
-
-        if (!list.isEmpty()) {
-            list
-                .get(0)
-                .setUpperLimit(
-                    grt.getCriteria().stream().map(GradingCriterionTemplate::getMaxPoints).reduce(0, Integer::sum)
-                );
+        for (int i = 0; i < gradeLimits.length; i++) {
+            GradeLimit gradeLimit = gradeLimits[i];
+            int lowerLimit = gradeLimit.getLowerLimit();
+            int upperLimit = i == 0 ? grt.getMaxPoints() : gradeLimits[i - 1].getLowerLimit() - 1;
+            GradeWithPointRange gradeWithPointRange = new GradeWithPointRange(gradeLimit.getGrade(), lowerLimit);
+            gradeWithPointRange.setUpperLimit(upperLimit);
+            list.add(gradeWithPointRange);
         }
 
         return list;