diff --git a/app-admin/keepass/files/keepass-2.31-force-text-grep.patch b/app-admin/keepass/files/keepass-2.31-force-text-grep.patch
new file mode 100644
index 0000000000000..c1086515f492b
--- /dev/null
+++ b/app-admin/keepass/files/keepass-2.31-force-text-grep.patch
@@ -0,0 +1,13 @@
+Force text mode for >=grep-2.22 (bug #574480).
+
+--- a/Build/PrepMonoDev.sh
++++ b/Build/PrepMonoDev.sh
+@@ -3,7 +3,7 @@
+
+ sed 's!true!false!g' ../KeePass/KeePass.csproj > ../KeePass/KeePass.csproj.new
+ sed 's! ToolsVersion="3.5"!!g' ../KeePass/KeePass.csproj.new > ../KeePass/KeePass.csproj.new2
+-cat ../KeePass/KeePass.csproj.new2 | grep -v 'sgen\.exe' > ../KeePass/KeePass.csproj
++cat ../KeePass/KeePass.csproj.new2 | grep -va 'sgen\.exe' > ../KeePass/KeePass.csproj
+ rm -f ../KeePass/KeePass.csproj.new2
+ rm -f ../KeePass/KeePass.csproj.new
+
diff --git a/app-admin/keepass/keepass-2.31.ebuild b/app-admin/keepass/keepass-2.31.ebuild
index cac738ec62ce4..d828fcf1d51a4 100644
--- a/app-admin/keepass/keepass-2.31.ebuild
+++ b/app-admin/keepass/keepass-2.31.ebuild
@@ -25,6 +25,9 @@ DEPEND="${COMMON_DEPEND}
S=${WORKDIR}
src_prepare() {
+ # Force text mode for >grep-2.21 (bug #574480)
+ epatch "${FILESDIR}/${PN}-2.31-force-text-grep.patch"
+
# Remove Windows-specific things
pushd Build > /dev/null || die
. PrepMonoDev.sh || die