fix [2071412] work around mdp 32-bits fade limitation

make sure to always specify blits *inside* the source bitmap.
diff --git a/opengl/libagl/copybit.cpp b/opengl/libagl/copybit.cpp
index 1bef859..a68750e 100644
--- a/opengl/libagl/copybit.cpp
+++ b/opengl/libagl/copybit.cpp
@@ -388,14 +388,33 @@
 
         copybit_image_t tmpCbImg;
         copybit_rect_t tmpCbRect;
+        copybit_rect_t tmpdrect = drect;
         tmpCbImg.w = w;
         tmpCbImg.h = h;
         tmpCbImg.format = tempCb->format;
         tmpCbImg.handle = (native_handle_t*)tempCb->getNativeBuffer()->handle;
         tmpCbRect.l = 0;
         tmpCbRect.t = 0;
-        tmpCbRect.r = w;
-        tmpCbRect.b = h;
+
+        if (drect.l < 0) {
+            tmpCbRect.l = -tmpdrect.l;
+            tmpdrect.l = 0;
+        }
+        if (drect.t < 0) {
+            tmpCbRect.t = -tmpdrect.t;
+            tmpdrect.t = 0;
+        }
+        if (drect.l + tmpCbImg.w > dst.w) {
+            tmpCbImg.w = dst.w - drect.l;
+            tmpdrect.r = dst.w;
+        }
+        if (drect.t + tmpCbImg.h > dst.h) {
+            tmpCbImg.h = dst.h - drect.t;
+            tmpdrect.b = dst.h;
+        }
+
+        tmpCbRect.r = tmpCbImg.w;
+        tmpCbRect.b = tmpCbImg.h;
 
         if (!err) {
             // first make a copy of the destination buffer
@@ -404,7 +423,7 @@
             copybit->set_parameter(copybit, COPYBIT_PLANE_ALPHA, 0xFF);
             copybit->set_parameter(copybit, COPYBIT_DITHER, COPYBIT_DISABLE);
             err = copybit->stretch(copybit,
-                    &tmpCbImg, &dst, &tmpCbRect, &drect, &tmp_it);
+                    &tmpCbImg, &dst, &tmpCbRect, &tmpdrect, &tmp_it);
         }
         if (!err) {
             // then proceed as usual, but without the alpha plane
@@ -424,7 +443,7 @@
             copybit->set_parameter(copybit, COPYBIT_PLANE_ALPHA, invPlaneAlpha);
             copybit->set_parameter(copybit, COPYBIT_DITHER, COPYBIT_ENABLE);
             err = copybit->stretch(copybit,
-                    &dst, &tmpCbImg, &drect, &tmpCbRect, &it);
+                    &dst, &tmpCbImg, &tmpdrect, &tmpCbRect, &it);
         }
     } else {
         copybit->set_parameter(copybit, COPYBIT_TRANSFORM, transform);