diff --git a/extra/calligra/PKGBUILD b/extra/calligra/PKGBUILD
index b81a938c2..c2d3a94b7 100644
--- a/extra/calligra/PKGBUILD
+++ b/extra/calligra/PKGBUILD
@@ -24,7 +24,7 @@ pkgname=('calligra-braindump'
          'calligra-stage'
          'calligra-words')
 pkgver=2.9.3
-pkgrel=1
+pkgrel=2
 arch=('i686' 'x86_64')
 url='http://www.calligra-suite.org/'
 license=('FDL1.2' 'GPL2' 'LGPL')
@@ -34,11 +34,16 @@ makedepends=('cmake' 'automoc4' 'boost' 'kdepimlibs' 'eigen' 'kdeedu-marble'
              'openjpeg' 'kdegraphics-okular' 'pstoedit' 'libvisio'
              'libetonyek' 'libpqxx' 'libspnav' 'postgresql') # 'libqgit2'
 groups=('calligra')
-source=("http://download.kde.org/stable/${pkgbase}-${pkgver}/${pkgbase}-${pkgver}.tar.xz")
-md5sums=('9242b44eeeb7f13f72aeafb8e9365c07')
+source=("http://download.kde.org/stable/${pkgbase}-${pkgver}/${pkgbase}-${pkgver}.tar.xz" 'krita_psd.patch')
+md5sums=('9242b44eeeb7f13f72aeafb8e9365c07'
+         '7f90c54dc15bfeaf14c58e74f3f4aae7')
 
 prepare() {
   mkdir build
+
+  cd $pkgbase-$pkgver
+# fix loading PSD files in Krita
+  patch -p1 -i "$srcdir"/krita_psd.patch
 }
 
 build() {
diff --git a/extra/calligra/krita_psd.patch b/extra/calligra/krita_psd.patch
new file mode 100644
index 000000000..67829a1da
--- /dev/null
+++ b/extra/calligra/krita_psd.patch
@@ -0,0 +1,24 @@
+From: Dmitry Kazakov <dimula73@gmail.com>
+Date: Wed, 29 Apr 2015 11:04:40 +0000
+Subject: Fast and dirty fix for loading PSD files
+X-Git-Url: http://quickgit.kde.org/?p=calligra.git&a=commitdiff&h=223e938ca5c2bd4724b4e2d1e59f72971e2977bf
+---
+Fast and dirty fix for loading PSD files
+
+PsdAdditionalLayerInfoBlock must know about the layers block size and not try to read
+it infinitely. So now just not signal errors, when it is finished.
+---
+
+
+--- a/krita/plugins/formats/psd/psd_additional_layer_info_block.cpp
++++ b/krita/plugins/formats/psd/psd_additional_layer_info_block.cpp
+@@ -41,7 +41,7 @@
+         b = io->peek(4);
+         if (b.size() != 4 || QString(b) != "8BIM") {
+             error = "No 8BIM marker for additional layer info block";
+-            return false;
++            return true;
+         }
+         else {
+             io->seek(io->pos() + 4); // skip the 8BIM header we peeked ahead for
+