diff --git a/packages/desktop-client/src/components/budget/report/ReportComponents.tsx b/packages/desktop-client/src/components/budget/report/ReportComponents.tsx
index a9f1d8c6f0576a849b2b58e6bfe976f762c3960b..eabfebb1ea39edb5dc8d5f7e1af5c270c241ed90 100644
--- a/packages/desktop-client/src/components/budget/report/ReportComponents.tsx
+++ b/packages/desktop-client/src/components/budget/report/ReportComponents.tsx
@@ -228,6 +228,7 @@ export const CategoryMonth = memo(function CategoryMonth({
                   onBudgetAction?.(month, 'copy-single-last', {
                     category: category.id,
                   });
+                  setMenuOpen(false);
                 }}
                 onSetMonthsAverage={numberOfMonths => {
                   if (
@@ -241,11 +242,13 @@ export const CategoryMonth = memo(function CategoryMonth({
                   onBudgetAction?.(month, `set-single-${numberOfMonths}-avg`, {
                     category: category.id,
                   });
+                  setMenuOpen(false);
                 }}
                 onApplyBudgetTemplate={() => {
                   onBudgetAction?.(month, 'apply-single-category-template', {
                     category: category.id,
                   });
+                  setMenuOpen(false);
                 }}
               />
             </Popover>
diff --git a/packages/loot-core/src/server/budget/actions.ts b/packages/loot-core/src/server/budget/actions.ts
index 2b02a4527c7ad618e8080db44a58df417355655a..ce388edd4b3260168c4d3c09647f3e623f438548 100644
--- a/packages/loot-core/src/server/budget/actions.ts
+++ b/packages/loot-core/src/server/budget/actions.ts
@@ -258,8 +258,13 @@ export async function set3MonthAvg({
         'sum-amount-' + cat.id,
       );
 
-      const avg = Math.round((spent1 + spent2 + spent3) / 3);
-      setBudget({ category: cat.id, month, amount: -avg });
+      let avg = Math.round((spent1 + spent2 + spent3) / 3);
+
+      if (cat.is_income === 0) {
+        avg *= -1;
+      }
+
+      setBudget({ category: cat.id, month, amount: avg });
     }
   });
 }
@@ -273,6 +278,11 @@ export async function setNMonthAvg({
   N: number;
   category: string;
 }): Promise<void> {
+  const categoryFromDb = await db.first(
+    'SELECT is_income FROM v_categories WHERE id = ?',
+    [category],
+  );
+
   let prevMonth = monthUtils.prevMonth(month);
   let sumAmount = 0;
   for (let l = 0; l < N; l++) {
@@ -283,8 +293,13 @@ export async function setNMonthAvg({
     prevMonth = monthUtils.prevMonth(prevMonth);
   }
   await batchMessages(async () => {
-    const avg = Math.round(sumAmount / N);
-    setBudget({ category, month, amount: -avg });
+    let avg = Math.round(sumAmount / N);
+
+    if (categoryFromDb.is_income === 0) {
+      avg *= -1;
+    }
+
+    setBudget({ category, month, amount: avg });
   });
 }
 
diff --git a/upcoming-release-notes/2862.md b/upcoming-release-notes/2862.md
new file mode 100644
index 0000000000000000000000000000000000000000..b46539fceeffb79692e91e9f602018575c7d8994
--- /dev/null
+++ b/upcoming-release-notes/2862.md
@@ -0,0 +1,6 @@
+---
+category: Bugfix
+authors: [lelemm]
+---
+
+For Report Budget, income categories were incorrectly showing as negative when using 'Set budgets to 3 month average'.