diff --git a/src/effects/Pixelate.cpp b/src/effects/Pixelate.cpp
index c993915c5..ed219e4da 100644
--- a/src/effects/Pixelate.cpp
+++ b/src/effects/Pixelate.cpp
@@ -33,7 +33,7 @@
using namespace openshot;
/// Blank constructor, useful when using Json to load the effect properties
-Pixelate::Pixelate() : pixelization(0.7), left(0.0), top(0.0), right(0.0), bottom(0.0) {
+Pixelate::Pixelate() : pixelization(0.5), left(0.0), top(0.0), right(0.0), bottom(0.0) {
// Init effect properties
init_effect_details();
}
@@ -68,7 +68,7 @@ std::shared_ptr Pixelate::GetFrame(std::shared_ptr frame, int64_t
std::shared_ptr frame_image = frame->GetImage();
// Get current keyframe values
- double pixelization_value = 1.0 - std::min(fabs(pixelization.GetValue(frame_number)), 1.0);
+ double pixelization_value = std::min(pow(0.001, fabs(pixelization.GetValue(frame_number))), 1.0);
double left_value = left.GetValue(frame_number);
double top_value = top.GetValue(frame_number);
double right_value = right.GetValue(frame_number);
@@ -82,8 +82,12 @@ std::shared_ptr Pixelate::GetFrame(std::shared_ptr frame, int64_t
QRect area(QPoint(0,0), frame_image->size());
area = area.marginsRemoved({int(left_value * w), int(top_value * h), int(right_value * w), int(bottom_value * h)});
+ int scale_to = (int) (area.width() * pixelization_value);
+ if (scale_to < 1) {
+ scale_to = 1; // Not less than one pixel
+ }
// Copy and scale pixels in area to be pixelated
- auto frame_scaled = frame_image->copy(area).scaledToWidth(area.width() * pixelization_value, Qt::SmoothTransformation);
+ auto frame_scaled = frame_image->copy(area).scaledToWidth(scale_to, Qt::SmoothTransformation);
// Draw pixelated image back over original
QPainter painter(frame_image.get());